无法从我的片段中的 ViewModel 观察 LiveData<MutableList<T>>
Cannot observe LiveData<MutableList<T>> from ViewModel in my fragment
MyFragment.kt:
viewModel.studentsTemp.observe(this, Observer {
adapter.submitList(it)
})
MyViewModel.kt
private var _studentsTemp = MutableLiveData<MutableList<Student>>()
val studentsTemp: LiveData<MutableList<Student>> get() = _studentsTemp
init {
_studentsTemp.value = mutableListOf<Student>()
}
Observer 仅在应用程序启动时被调用,即在创建 ViewModel 时,即在 View Model 中运行 init 块时。
您的 MutableLiveData
中有一个 MutableList
。请注意,如果您在 MutableList
中添加或删除项目,这不会触发观察者。要触发观察者,您必须更新 LiveData
变量。
所以这不会触发观察者
studentsTemp.value?.add(student)
但这会
studentsTemp.value = studentsTemp.value?.add(student) ?: mutableListOf(studen)
MyFragment.kt:
viewModel.studentsTemp.observe(this, Observer {
adapter.submitList(it)
})
MyViewModel.kt
private var _studentsTemp = MutableLiveData<MutableList<Student>>()
val studentsTemp: LiveData<MutableList<Student>> get() = _studentsTemp
init {
_studentsTemp.value = mutableListOf<Student>()
}
Observer 仅在应用程序启动时被调用,即在创建 ViewModel 时,即在 View Model 中运行 init 块时。
您的 MutableLiveData
中有一个 MutableList
。请注意,如果您在 MutableList
中添加或删除项目,这不会触发观察者。要触发观察者,您必须更新 LiveData
变量。
所以这不会触发观察者
studentsTemp.value?.add(student)
但这会
studentsTemp.value = studentsTemp.value?.add(student) ?: mutableListOf(studen)