Для этого сценария:
Модель
data class User(var id: int, var name: String)
Просмотр модели
val Users: LiveData<List<User>>
val SelectedUser: LiveData<User>
fun changeSelectedUserName(){SelectedUser.Name = "foo"}
UI
<android:TextView Text="@{viewmodel.SelectedUser.name}"/>
<android:Button Text="Change!" onClik="@{() -> viewmodel.changeSelectedUserName()}"/>
Когда пользователь нажимает 'Изменить! ' текстовое представление не изменится, потому что поле 'name' не является LiveData.
Вопросы
- Должен ли класс данных повторно отображать свои поля как LiveData?
- Если да, что будет с обычными полями? Заменены ли они или сохранены другим соглашением об именах?
- Какое правильное соглашение об именах, если я использую дооснащение? Таким образом, я могу сохранить и методы интерфейса, и LiveData, работая с меньшим количеством кода?