Я хочу обновить представления с помощью привязки данных с liveata. Давайте посмотрим на сценарий.
Класс данных
data class Movie(var name: String = "", var createdAt: String = "")
ViewModel
class MyViewModel: ViewModel(){
var pageTitle: MutableLiveData<String>()
var movie: MutableLiveData<Movie>()
fun changeTitleAndMovieName()
pageTitle.value = "Title Changed"
movie.value.name = "Movie Name Changed"
}
}
XML
<layout>
...
<TextView
...
android:text="@{`Title: `+viewmodel.pageTitle `Name: `+viewmodel.movie.name}"/>
<Button
...
android:onClick="@{() -> viewmodel.changeTitleAndMovieName()}"/>
</layout>
Что я хочу сделать?
- Когда нажата кнопка, название и название фильма должны измениться и отобразиться в виде.
Что происходит сейчас?
- Из-за типа строки LiveData изменяется только заголовок страницы.
- Название фильма НЕ отображается на виде из-за типа LiveData типа фильма, и я изменяю свойство свойства LiveData типа фильма.
Есть ли способ обновить тип фильма LiveData для представления при изменении какого-либо свойства фильма.
Я не хочу переназначать объект в liveata, например. viewmodel.movie.value = Movie(...)