写在前面:关于DataBinding,感觉用的人不是很多,毕竟这是一个服务于XML的,如果要是单纯的用来绑定控件,用ViewBinding或者Kotlin的Kotlin-android-extension也都够用了。上网查了查,也有很多关于DataBinding坑很大的说法,这里贴一篇郭神的文章来解个惑。
关于DataBinding的用法资料一堆,这篇文章主要说的是自定义BindingAdapter的创建与使用。
通过观察源码不难发现,自动生成的ViewBingingAdapter类中包含了各种静态方法,并且这些静态方法前都有@BindingAdapter标签,标签内有对应于UI控件在布局文件中属性的别名。因此,我们的自定义BindingAdapter也要按照这个方式去编写。
这里以通过Picasso加载网络图片为例。加载依赖implementation 'com.squareup.picasso:picasso:2.71828’以及在Manifest文件中加入网络权限后,进入正式的代码编写工作。
一、基本方法
①编写自定义的BindingAdapter类。
object ImageViewBindingAdapter {
@BindingAdapter("image")
@JvmStatic
fun setImage(imageView: ImageView,imageUrl:String){
if (!TextUtils.isEmpty(imageUrl)){
Picasso.get()
.load(imageUrl)
.placeholder(R.drawable.ic_default)
.error(R.drawable.ic_error)
.into(imageView)
}else{
imageView.setBackgroundColor(Color.DKGRAY)
}
}
@BindingAdapter("image")
@JvmStatic
fun setImage(imageView: ImageView,imageResource:Int){
imageView.setImageResource(imageResource)
}
}
我们编写了一个setImage静态