在哪里放置android BindingAdapter方法?

时间:2016-11-28 13:43:41

标签: android android-databinding 2-way-object-databinding

这必须是最基本的问题,但经过一整天的阅读教程和文档here后,我似乎无法理解将这些方法放在何处。没有一个指南提到放置这个东西的地方,只是提到在静态方法上使用注释。什么静态方法?任何静态方法都可以,无论什么类?什么是好习惯?创建一个CustomBinding类来托管所有这些静态方法?

只要我的方法有一个BindingAdapter注释并且第一个参数是一个View,它会起作用吗?

我假设第一个参数是View类型我可以将绑定属性放在任何类型的视图上,它会触发方法吗?因此,如果我有特定的视图说EditText,这是否意味着只有在布局文件的EditText视图中找到属性时才调用该方法?

2 个答案:

答案 0 :(得分:22)

在浏览互联网后,我终于找到了其中一位开发人员的信息。我希望他们能够更清楚地了解文档中的基础知识。

Quote

绑定适配器是用于执行此操作的任何类中的带注释的方法。通常,您可以根据目标视图类型将适配器组织到[-a]类中。

这显然意味着在编译时,任何具有注释BindingAdapter的类中的所有方法都将生成BindingAdapter。

答案 1 :(得分:3)

您将它放在模型类中。

示例:

XML:

    <data>

    <variable
        name="item"
        type="com.yourpackage.Model"/>
      </data>
         ......

           <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@{item.resId}"/>

型号:

public class Model {

@DrawableRes
private final int resId;

public Model(int resId) {
    this.resId = resId;
}

public int getResId() {
    return resId;
}

@BindingAdapter ("android:src")
public static void setImageResource(ImageView imageView, int resource){
    imageView.setImageResource(resource);
}

}