Я слежу за проектом Google android «угадай это» через udacity, где они вводят liveata и mutablelivedata.Мы дошли до того, что мы создаем жилатые данные, эквивалентные объекту mutablelivedata, и создаем обратное свойство get () для жилой информации для экземпляра mutablelivedata.Мы вносим все изменения в данные в viewModel, используя экземпляр mutablelivedata.Фрагмент нашего пользовательского интерфейса устанавливает наблюдателей на объекты liveata viewModel, а не на объекты mutablelivedata.
Несмотря на то, что наблюдатель находится на экземпляре livingata, а не на экземпляре mutablelivedata, когда объект mutablelivedata обновляется, код наблюдателя liveata запускается,Мне нравится, что это работает так, но я не совсем понимаю, как это работает.Кто-нибудь может мне это объяснить?
В ViewModel
val _word = MutableLiveData<String>()
val word : LiveData<String>
get() = _word
Редактировать в ViewModel
private fun nextWord() {
//Select and remove a word from the list
if (wordList.isEmpty()) {
//gameFinished()
} else {
_word.value = wordList.removeAt(0)
}
}
Во фрагменте пользовательского интерфейса
viewModel.word.observe(this, Observer{newWord ->
binding.wordText.text = newWord
})