Data Binding 解決了 Android UI 編程的一個痛點,官方原生支持 MVVM 模型可以讓我們在不改變既有代碼框架的前提下,非常容易地使用這些新特性。Data Binding 的最大的好處就是Android開發(fā)者可以像前端開發(fā)那樣直接在View中綁定數(shù)據(jù),避免了代碼的重復和繁瑣。言歸正傳,下面帶領大家使用Data Binding。
準備
新建一個Project,保證Android 的 Gradle 插件版本不低于 1.5.0-alpha1:
classpath 'com.android.tools.build:gradle:3.0.1'
然后修改對應模塊的build.gradle:
dataBinding{
enabled = true
}
修改好的build.gradle如下圖所示:

dataBindingEnabled.png
布局文件
使用 Data Binding 之后,xml 的布局文件就不再用于單純地展示 UI 元素,還需要定義 UI 元素用到的變量。所以,它的根節(jié)點不再是一個 ViewGroup,而是變成了 layout,并且新增了一個節(jié)點 data。
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
</data>
<ConstraintLayout>
....
</ConstraintLayout>
</layout>
數(shù)據(jù)對象
定義一個Bean
public class UserBean {
private String name;
private int age;
public UserBean(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
定義 Variable
我們將在xml中去綁定剛剛定義的Bean
<data>
<variable
name="UserBean"
type="com.zhangl.data.UserBean">
</variable>
</data>
定義的TextView中text=@{UserBean.name}
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text="@{UserBean.name}"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
這樣就將UserBean中的name和TextView綁定起來。
Activity中實現(xiàn)
ActivityMainBinding mainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main);
UserBean userBean = new UserBean("zhangl",24);
mainBinding.setUserBean(userBean);

數(shù)據(jù)綁定顯示.png
可以看到,已經(jīng)將數(shù)據(jù)顯示顯示在activity中。
文末附上github地址:https://github.com/zhanglu1994/DataBinding