【发布时间】:2021-03-14 10:32:42
【问题描述】:
我想在 ClickListener 中传递一个 MutableLiveData<Integer>,而不需要数据绑定自动解包它,只传递 Integer。是否有一种特殊的语法来告诉数据绑定不理会MutableLiveData<Integer> 并按原样传递它?
这是一个例子:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{v -> viewmodel.doSomething(viewmodel.myMutableLiveData1)}" />
然后我会继续更改myMutableLiveDataX 中doSomething() 的值
整件事的原因是,我有多个myMutableLiveDataXs,它们都在做同样的事情,但是对于不同的数据,我不想创建doSomething1()doSomething2()等...
一种可能但笨拙的解决方法当然是将MutableLiveData 包装在另一个对象中,并在需要原始MutableLiveData 时传递该对象,然后在使用解包数据时对该对象使用getter。
【问题讨论】:
-
如果你从viewmodel调用方法,并从viewmodel传递数据,那为什么还要传递数据呢?只需在您正在调用的方法中使用日期即可?
-
@SamirSpahic 原因是我想对不同的数据使用相同的方法,例如
doSomething(data1)、doSomething(data2)、doSomething(data3)等。如果我直接在方法中使用数据,我需要多次重复相同的方法。
标签: android data-binding android-databinding android-livedata