第一部分:DataBinding是什么?
我来答: 是google官方指导架构篇Architecture Components的一个支持库,借用它可以将UI界面组件绑定到应用的数据源中。
第二部分: 作为Android 开发者我如何接入使用呢?
只需一步,在app module的build.gradle下加入如下配置:
android { ...
dataBinding {
enabled = true
} }
拓展:我所理解的mvvm
通常实现Android业务时我们在Activity里书写查找控件、界面交互、网络请求、逻辑业务代码,很快我们写多了发现Activity里代码太多,业务模块复用不便,为此大家开始用MVP,比如将网络请求和业务模块放在Presenter里,后来为我们熟知的Architecture Components推出了很多好用的库,其中有DataBinding,ViewModel,realm,room,lifecycleview,liveData等,后来大家开始使用ViewModel+DataBinding来实现MVVM,ViewModel里主要放置数据(ObservableField,ObservableBoolean,ObservableArrayList),以及一些网络请求,业务逻辑代码。据我使用的经验来说,这个看似很简单,但是如何把握分离的度和恰好的利用来做业务设计不是朝夕的功夫还得多踩坑,但是这样使用起来更利于逻辑的梳理,代码解耦和相似业务代码的复用以及数据共享
第三部分: 快快教我大展伸手吧~~~^o^
一入英文文档深似海,出来只是码路人,要想用得好,还得多实战。 下面就我的理解和实际运用略说一二:
初级应用: 利用DataBinding替代findViewById
初级应用: UI事件绑定(方法引用和用lamda表达式自定义方法调用)
初级应用: include绑定和使用Observable双向绑定
初级应用: 表达式和Observable
高级应用: BindingAdapter为你自定义属性设置绑定方法
@BindingAdapter({"imageUrl", "error"})
public static void loadImage(ImageView view, String url, Drawable error)
{
Picasso.get().load(url).error(error).into(view);
}
@BindingAdapter({"imageUrl", "error"})
public static void loadImage(ImageView view, String url, Drawable error) {
Picasso.get().load(url).error(error).into(view);
}
高级应用: DataBinding双向绑定
双向绑定使用方法:
解决双向绑定的死循环
监听双向绑定的属性值变化
高级应用: Recycleview使用DataBinding
附: Demo代码