databinding學習(1)

(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的身影了

相關文章
相關標籤/搜索