Android 如何选择要使用的绑定转换或绑定适配器?

Android 如何选择要使用的绑定转换或绑定适配器?,android,data-binding,Android,Data Binding,这涉及到数据绑定指南()中的两个特性:BindingAdapters和BindingConverion。以下示例摘自指南: 我的问题是: 如果有两个具有相同方法签名的不同BindingAdapter,如何指示对给定视图使用哪一个?(不使用自定义字段名变体,如myPaddingLeftOne、myPaddingLeftTwo等) 类似地,如果我有两个具有相同输入和返回类型的bindingConversion,我如何指示在给定情况下使用哪种类型 简而言之,你不能。如果有两个具有相同目标类型和相

这涉及到数据绑定指南()中的两个特性:BindingAdapters和BindingConverion。以下示例摘自指南:




我的问题是:

如果有两个具有相同方法签名的不同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);
}