Привязка данных - доступ к отдельным свойствам, содержащимся в LiveData - PullRequest
0 голосов
/ 10 октября 2018

Есть ли способ сделать что-то подобное с LiveData и привязкой данных?

ViewModel имеет это свойство:

val weather: LiveData<UnitSpecificCurrentWeatherEntry>

Что я пытаюсь сделать в макете:

<TextView
    android:id="@+id/textView"
    android:text="@{viewmodel.weather.value.someProperty}"... />

Возможно ли это каким-либо образом или мне нужно разделить объект, содержащийся в LiveData, на несколько объектов для каждого свойства содержащегося объекта?

1 Ответ

0 голосов
/ 15 октября 2018

С точки зрения паттерна MVVM это не совсем правильно.В вашем примере представления требуется знать о путь свойства для отображения данных.Желательно предоставлять целевые данные непосредственно из ViewModel.Если ваша собственность зависит от другой, вы можете использовать Transformations:

val weather: LiveData<UnitSpecificCurrentWeatherEntry> = //suppose, we have instantiation here
val someProperty: LiveData<SomePropertyType> = Transformations.map(weather) { it.someProperty }

Теперь вы можете использовать ее в своем XML:

<TextView
    android:id="@+id/textView"
    android:text="@{viewmodel.someProperty}"/>
...