数据绑定-访问LiveData中包含的各个属性

时间:2018-10-10 18:41:00

标签: android kotlin android-databinding android-livedata

是否可以使用LiveData和数据绑定执行类似的操作?

ViewModel具有此属性:

val weather: LiveData<UnitSpecificCurrentWeatherEntry>

我要在布局中尝试做的事情:

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

这是否有可能,或者我必须针对包含的对象的每个属性将LiveData中包含的对象拆分为多个对象?

1 个答案:

答案 0 :(得分:1)

从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}"/>