我的片段中无法从ViewModel观察LiveData <MutableList <T >>

时间:2020-04-07 18:38:13

标签: android kotlin mvvm android-livedata mutablelivedata

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>()
}

仅在应用程序启动时即创建ViewModel时即在View Model中运行init块时才调用观察者。

1 个答案:

答案 0 :(得分:2)

您的MutableList中有一个MutableLiveData。请注意,如果您在MutableList中添加或删除项目,则不会触发观察者。要触发观察者,您必须更新LiveData变量。

所以这不会触发观察者

studentsTemp.value?.add(student)

但这会

studentsTemp.value = studentsTemp.value?.add(student) ?: mutableListOf(studen)