Android 如何选择要使用的绑定转换或绑定适配器?
这涉及到数据绑定指南()中的两个特性:BindingAdapters和BindingConverion。以下示例摘自指南:Android 如何选择要使用的绑定转换或绑定适配器?,android,data-binding,Android,Data Binding,这涉及到数据绑定指南()中的两个特性:BindingAdapters和BindingConverion。以下示例摘自指南: 我的问题是: 如果有两个具有相同方法签名的不同BindingAdapter,如何指示对给定视图使用哪一个?(不使用自定义字段名变体,如myPaddingLeftOne、myPaddingLeftTwo等) 类似地,如果我有两个具有相同输入和返回类型的bindingConversion,我如何指示在给定情况下使用哪种类型 简而言之,你不能。如果有两个具有相同目标类型和相
我的问题是: 如果有两个具有相同方法签名的不同BindingAdapter,如何指示对给定视图使用哪一个?(不使用自定义字段名变体,如myPaddingLeftOne、myPaddingLeftTwo等)
类似地,如果我有两个具有相同输入和返回类型的bindingConversion,我如何指示在给定情况下使用哪种类型 简而言之,你不能。如果有两个具有相同目标类型和相同值类型的绑定适配器,则最后编译的适配器将是使用的适配器。通过这种方式,您可以覆盖库中的实现 使用不同的应用程序名称空间属性来区分这两个属性,或者使用方法在表达式中进行转换(如果这样有帮助的话) 绑定转换也是如此 如果有时需要转换而不需要其他转换,请在表达式中使用自定义属性和BindingAdapter或转换函数。绑定转换功能强大,但您应该限制使用它们的时间,因为它们在任何转换可以使表达式工作的时候都会被激活。数据绑定库中使用的一个示例是将整数颜色转换为ColorDrawable,以便在Drawable为参数时使用
@BindingAdapter("android:paddingLeft")
public static void setPaddingLeft(View view, int oldPadding, int newPadding) {
if (oldPadding != newPadding) {
view.setPadding(newPadding,
view.getPaddingTop(),
view.getPaddingRight(),
view.getPaddingBottom());
}
}
@BindingConversion
public static ColorDrawable convertColorToDrawable(int color) {
return new ColorDrawable(color);
}