首页 > 解决方案 > Java Android数据绑定:@Bindable和@BindingAdapter有什么区别

问题描述

我刚刚使用[双向]数据绑定了解java android中的MVVM模式,我对这两个注释的使用感到困惑。在 1 篇文章中,示例是使用 @Bindable 和 notifyPropertyChanged 设置可观察数据,而在另一篇文章中,作者在他的示例中使用了 @BindingAdapter。两者有什么区别?似乎两个注释都有相同的目的,我什么时候应该使用 @Bindable 而不是 @BindingAdapter ?

下面是一些代码参考:对于可绑定(取自:https ://androidwave.com/working-with-observable-data-object-using-data-binding/ )

@Bindable
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
    notifyPropertyChanged(BR.name);
}

对于 BindingAdapter(取自:https ://androidwave.com/android-data-binding-recyclerview/ )

@BindingAdapter({ "avatar" })
public static void loadImage(ImageView imageView, String imageURL) {
  Glide.with(imageView.getContext())
      .setDefaultRequestOptions(new RequestOptions()
          .circleCrop())
      .load(imageURL)
      .placeholder(R.drawable.loading)
      .into(imageView);
}

谢谢您的帮助。

标签: javaandroiddata-bindingandroid-mvvm

解决方案


BindingAdapter 是在你要绑定的属性没有被android框架实现的情况下创建自定义绑定方法。另一方面,Bindable 用于将数据绑定到视图。为清楚起见,您可以将绑定适配器想象为自定义键,但可绑定为键的值。


推荐阅读