DataBinding 入门简介

Posted on By Qinggai Huang

DataBinding使用准备

appbuild.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); //另外指定一个变量