(1)在工程的gradle中聲明java
dependencies { classpath 'com.android.tools.build:gradle:1.3.0' classpath "com.android.databinding:dataBinder:1+" }
(2)在模塊的gradle中聲明android
apply plugin: 'com.android.databinding'
(3)聲明一個數據模型app
public class User { public String firstName ; public String lastName ; public User(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; }
(4)設置layout中的數據源佈局
<layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <data> <variable name="user" type="com.example.lin.myapplication.model.User"/> </data>
必須設置 <layout>標籤爲根目錄gradle
<TextView android:layout_width="wrap_content" android:text="@{user.firstName}" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:text="@{user.lastName}" android:layout_height="wrap_content" />
在view上綁定數據ui
(5)在java代碼中建立實體類對象this
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); User user = new User("lin", "zhibiao"); binding.setUser(user);
注意: 引入佈局的方法使用spa
注意: 修改 Project 的 build.gradle,保持 gradle 和 dataBinder 都是最新版,不然會因爲 Android Studio 的一次升級致使 Data Binding 失效。 classpath 'com.android.tools.build:gradle:1.3.+' classpath 'com.android.databinding:dataBinder:1.+'雙向綁定
發現1: 實體類能夠聲明爲私有變量,實現set get方法,依然能夠在xml佈局文件中使用 @{user.firstName}找到數據code
發現2: 設置一個按鈕 點擊事件爲修改數據模型對象的屬性 ,界面上並無變化,看來並無雙向綁定?
發現3: xml 的文件名叫 activity_basic.xml,那麼生成的類就是 ActivityBasicBinding
若是發生出現錯誤相似Error:Failed to resolve: com.android.databinding:library:1.0-rc1
解決辦法:更新SDK的Extras下的Android Support Repository和Android Support Library包,更新後就能夠在sdk/extras/android/m2repository/com/android/databinding的 文件夾中的adapter和library文件夾中發現1.0-rc1的身影了