Не могу наблюдать LiveData из ViewModel в моем фрагменте - PullRequest
0 голосов
/ 07 апреля 2020

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, т.е. при запуске блока init в View Model. .

1 Ответ

1 голос
/ 07 апреля 2020

У вас есть MutableList в вашем MutableLiveData. Обратите внимание, что если вы добавите или удалите элементы из вашего MutableList, это НЕ вызовет наблюдателя. Чтобы вызвать наблюдателя, вы должны обновить переменную LiveData.

Так что это не вызовет наблюдателя

studentsTemp.value?.add(student)

, но это будет

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