我应该可以在Android dataBinding中使用@BindingAdapter,这样我就可以覆盖某个属性。我可以用cusutom属性来做,但是有一个android内置属性它是如何完成的?
到目前为止我所拥有的: 在我的viewModel中,我有一个用@BindingAdapter注释的方法,如下所示:
@BindingAdapter({"android:text"})
public static void setText(Button view,boolean language) {//i need to pass one more variable in here for area code , its just a integer, but how ?
if("french".equals(language))//i want to test if french && area code
view.setText("si vous play");
else if ("English".equals(language)) //i want to test if french && area code
view.setText("please");
}
但我有一些问题。让我们看看xml:
<Button
android:id="@+id/mybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{`french,844`}"/>
请参阅我的问题,我想将多个参数传递给dataBinding。但是怎么样?我是否必须制作一个POJO对象并将其传入?即使我这样做我如何从xml设置对象?
所以如果有人能告诉我以下情况我会没事的: 1.如何将多个值传递给bindingAdapter和 2.如何在任何视图中覆盖内置的android属性。
答案 0 :(得分:1)
如果要在BindingAdapter中设置两个不同的值,则应使用两个不同的属性:
<Button
android:id="@+id/mybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{`french`}"
app:areaCode="@{`844`}"/>
然后在BindingAdapter中有两个不同的属性:
@BindingAdapter({"android:text", "areaCode"})
public static void setText(Button view, String language, String areaCode) {
...
}
但是设置一个不同的“app:language”可能会更好,因为开发人员会更清楚。