nir*_*rma 2 android kotlin android-livedata android-jetpack
我在项目中使用 Android Jetpack 组件 ViewModel + 实时数据之一,当使用字符串和 Int 等普通数据时,它对我来说效果很好,但当涉及到 arrayList 时,它不会观察到任何内容
这是我的代码
class MainActivityModel : ViewModel() {
private var dataObservable = MutableLiveData<ArrayList<Int>>()
init {
dataObservable.value = arrayListOf(1,2,3,4,5)
}
fun getInt(): LiveData<ArrayList<Int>> = dataObservable
fun addInt(i:Int) {
dataObservable.value!![i] = dataObservable.value!![i].plus(1)
}
}
Run Code Online (Sandbox Code Playgroud)
LiveData 不会向观察者广播更新,除非它的值被完全重新分配为新值。这不会重新分配该值:
dataObservable.value!![i] = dataObservable.value!![i].plus(1)
Run Code Online (Sandbox Code Playgroud)
它的作用是保留现有数组,但添加一个数组元素。LiveData 不会就此通知其可观察对象。实际的数组对象必须重新分配。
如果您想重新分配一个新的数组值并通知所有观察者,请完全重新分配一个新数组,如下所示:
dataObservable.value = dataObservable.value!![i].plus(1)
Run Code Online (Sandbox Code Playgroud)
分配dataObservable.value将调用 LiveDatasetValue()方法,并通知观察者传递给 的新值setValue()。
| 归档时间: |
|
| 查看次数: |
2895 次 |
| 最近记录: |