DataBinding使用准备
在app
的build.gradle
里面添加
android {
...
dataBinding {
enabled = true
}
}
某些版本android studio
需要在gradle.properties
文件中添加
android.databinding.enableV2=true
有了这些sync一下就可以开始使用了
简单使用介绍
databinding
的好处是数据和view
绑定在一起的,做好前期关联工作后,我们只需要关心对数据的更新即可。数据更新后,底层代码会主动调用notify
通知view
数据变化了(观察者模式,此时View相当于数据的一个观察者),view
的显示也就更新了。
一般是一个xml
布局关联一个特定的ViewModel
对象,ViewModel
对象控制着数据的改变。
ViewModel
可以是继承BaseObservable
,在数据更新时调用notifyPropertyChanged(BR.specificName)
。或者不需要继承类,通过使用ObservableField
之类的数据,在数据变化时,调用.set
之类的方法实现。这是两种方式,第二种方式比较灵活,因为不需要继承任何父类,这样可以有继承其他类的可能性。
LiveData等数据最好房子ViewModel中,因为Configuration变化的时候,Activity会销毁重建,放在ViewModel中能保证数据和之前的一致。
好用的库
https://github.com/evant/binding-collection-adapter
使用上面的库写ListView RecyclerView
等时,可以省略写adpter,比较方便。
<data></data>
中可以有多个<variable>
。Itembinding.of(variableId, layout); // 可以给layout绑定一个ViewModel itemBinding.bindExtra(variableId, variableValue); //另外指定一个变量