是否可以使用LiveData和数据绑定执行类似的操作?
ViewModel具有此属性:
val weather: LiveData<UnitSpecificCurrentWeatherEntry>
我要在布局中尝试做的事情:
<TextView
android:id="@+id/textView"
android:text="@{viewmodel.weather.value.someProperty}"... />
这是否有可能,或者我必须针对包含的对象的每个属性将LiveData中包含的对象拆分为多个对象?
答案 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}"/>