關于作者:
1.第一次寫簡書,好多專業術語發現自己不會表達,所以寫的很粗俗易懂,適合新學者,也適合自己進行復
習鞏固。
2.初級篇文章大部分引用了沈樣(以下簡稱樣哥)給我的筆記,沒有筆記我可能到現在還是摸不著頭腦呢!!!
3.文章沒有一句多余的話,強調的肯定都是重點。因為剛開始使用簡書做為筆記,還怎么不熟悉標注重點,
以后慢慢更改,抱歉!!!
4.文章中所有重點的截圖均來自實戰項目,小demo自己寫的除外。請仔細看。
------------------------------------------------初級篇--------------------------------------------------------
一、使用之前的配置
1. Android平臺不低于Android 2.1(API等級7+),目前as版本至少都在2.1以上,此條限制可以忽略。
2.在app下層的build.gradle中添加代碼
dataBinding.enable = true
二、最簡單的使用
1. 我們先創建一個bean,用于存儲數據
1. public class TestBean {
public String name;
2. 在使用bind的布局中使用<layout>標簽包裹整個布局,需要把申明放到我們的layout里面
1. <layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
3. 我們要在布局中定義一塊區域來申明變量,<data>標簽
4. 就可以在<data>標簽內定義變量,使用variable標簽,但是要注意大小寫,是<variable>
5. 在variable標簽中定義兩個屬性
1. name屬性可以自己定義名稱(下劃線不能命名)
2. type屬性是包名+類名(bean類)
<data>
<variable
name="test"
type="com.example.beans.TestBean"></variable>
</data>
<RelativeLayout
.......
6. 在控件中使用變量了
1. "@{name的名字.bean類里的變量}"
2. <TextView
android:layout_width="wrap_content"
android:text="@{test.name}"
7. 但我們是不是需要給變量賦值
1. 我們需要需要在界面初始化前
1. 所有取消setContentView();
2. 我們使用bind來初始化我們的界面
ActivityMainBinding dataBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
3. 系統自動為我們生成的ViewDataBinding,命名規則
1. Activity_main的xml對應的類ActivityMainBinding
4. 把我們xml布局中定義的變量初始化
1. Binding對象set方法
1. 方法名稱為我在<variable>標簽中定義的name屬性
TestBean testBean = new TestBean();
testBean.name = "測試";
dataBinding.setTest(testBean);
OK,帶一點實戰用到的
引入子布局的時候,在子布局中使用主布局傳過來的數據
1. 創建子布局
2. 在子布局中定義變量
1. <variable
name="suer"
type="com.example.sy.beans.DataBinds"></variable>
3. 在子布局中定義一個控件顯示數據
1. <TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:text="@{suer.NAME}"
android:layout_height="wrap_content"/>
4. 在子布局定義
1. 在子布局中定義命名空間:
1. xmlns:include01="http://schemas.android.com/apk/res-auto"
2. 主布局中的變量定義
1. <variable
name="sy"
type="com.example.sy.beans.DataBinds"></variable>
5. <include layout="@layout/include_layout"
include01:suer = "@{sy}" ></include
6.在MainActivity里面直接
說了這么多,大家知道了他的用法,我也不買官司了,直接說出數據綁定的好處了,也是最直接的好處,就是他不用findviewbyid,而且,再也都不用,什么注解,全都OUT了!!!
下面我就解釋一下他是怎么用的,其實很簡單:
ActivityMainBinding dataBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
當我們得到dataBinding 這個對象以后,直接"dataBinding.布局文件的id"就可以了,省去了我們寫大量不必要而且沒有意思的findviewbyid代碼了(ActivityMainBinding需要我們手動改一下名字,系統生成的是ViewDataBinding,就像我們平時findviewbyid需要強轉一樣)。
------------------------------------------------That's all--------------------------------------------------------
初級篇就講這么多,進階篇盡快更新。
筆者給大家的建議:把初級篇學會,就再也不用findviewbyid和使用注解那么麻煩了,這是初級篇的偏重點。當然,進階篇主要用于實戰,期待吧!