android BindingAdapter 方法放在哪里?

Where to place android BindingAdapter method?

这一定是最基本的问题,但在阅读了一整天的教程和文档后 here 我似乎无法理解将这些方法放在哪里。 None 的指南提到这个东西放在哪里它只是提到在静态方法上使用注释。什么静态方法?不管 class 有没有任何静态方法?什么是好的做法?我应该创建一个 CustomBinding class 来托管所有这些静态方法吗?

只要我的方法有一个 BindingAdapter 注释并且第一个参数是一个视图,它就可以工作吗?

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

你把它放在你的模型中 class。

示例:

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);
    }
}

在浏览互联网后,我终于从其中一位开发人员那里找到了一些信息。我希望他们对文档中的基础知识更加清楚。

Quote:

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

这显然意味着在编译时任何带有注解 BindingAdapter 的 class 中的所有方法都将生成 BindingAdapter。