java - 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);
}
谢谢您的帮助。
解决方案
BindingAdapter 是在你要绑定的属性没有被android框架实现的情况下创建自定义绑定方法。另一方面,Bindable 用于将数据绑定到视图。为清楚起见,您可以将绑定适配器想象为自定义键,但可绑定为键的值。
推荐阅读
- django - RuntimeError:线程“ThreadPoolExecutor-0_0”中没有当前事件循环
- powershell - 在脚本中捕获来自 Get-NetRoute 的输出时遇到问题
- linux - Linux 上的二进制可执行文件在哪里?
- google-cloud-platform - Google Cloud Run 并发限制 + 自动扩缩说明
- function - 无法使用学术导入 --bibtex 导入出版物
- javascript - 返回对象数组中的最大数
- r - R data.table:带有命名列的新数据表并删除其余部分
- r - 条形图中的美学错误(ggplot,R)
- flutter - CircleAvatar 不是圈子
- php - 如何在本地任务链接中添加图标?(德鲁巴)