Data Binding
庫是一個support
庫授嘀,使用該庫大磺,您可以使用聲明性格式而非編程方式將布局中的UI組件綁定到應用程序中的數(shù)據(jù)源给郊。
布局通常在activities中使用調(diào)用UI框架方法的代碼進行定義菩浙。 例如,下面的代碼調(diào)用findViewById()
來查找TextView小部件并將其綁定到viewModel變量的userName屬性:
TextView textView = findViewById(R.id.sample_text);
textView.setText(viewModel.getUserName());
以下示例顯示如何使用Data Binding
庫直接在布局文件中將文本分配給widget睬愤。 這樣就無需調(diào)用上面顯示的任何Java代碼片仿。 注意在賦值表達式中使用@ {}
語法:
<TextView
android:text="@{viewmodel.userName}" />
通過在布局文件中綁定組件,您可以刪除activities中的許多UI框架調(diào)用尤辱,從而使它們更易于維護砂豌。 這也可以提高應用程序的性能,并有助于防止內(nèi)存泄漏和空指針異常光督。
注意:在許多情況下阳距,
view binding
可以提供與data binding
相同的好處,實現(xiàn)起來更簡單结借,性能更好筐摘。 如果您主要使用data binding
來替換findViewById()調(diào)用,請考慮改為使用view binding
船老。
使用Data binding
使用以下頁面來學習如何在Android應用程序中使用Data binding庫咖熟。
開始
了解如何使開發(fā)環(huán)境準備好與Data binding庫配合使用,包括在Android Studio中支持Data binding代碼柳畔。
布局和綁定表達式
表達式語言允許您編寫將變量連接到布局中的視圖的表達式球恤。 Data binding庫會自動生成將布局中的視圖與數(shù)據(jù)對象綁定所需的類。 該庫提供了諸如導入荸镊,變量之類的功能,并且可以在布局中使用這些功能堪置。
庫的這些功能與您現(xiàn)有的布局無縫共存躬存。 例如,可以在表達式中使用的綁定變量是在data元素內(nèi)定義的舀锨,該數(shù)據(jù)元素是UI布局的根元素的同級元素岭洲。 這兩個元素都包裝在一個layout標簽中,如以下示例所示:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewmodel"
type="com.myapp.data.ViewModel" />
</data>
<ConstraintLayout... /> <!-- UI layout's root element -->
</layout>
使用observable的數(shù)據(jù)對象
Data Binding提供了類和方法坎匿,可輕松觀察數(shù)據(jù)的變化盾剩。 當基礎(chǔ)數(shù)據(jù)源發(fā)生更改時,您不必擔心刷新UI替蔬。 您可以使變量或其屬性可觀察告私。 該庫使您可以觀察對象,字段或集合承桥。
生成的綁定類
Data Binding庫生成綁定類驻粟,這些綁定類用于訪問布局的變量和視圖。 該頁面顯示了如何使用和定制生成的綁定類凶异。
綁定適配器
對于每個布局表達式蜀撑,都有一個綁定適配器挤巡,可以進行設(shè)置相應屬性或偵聽器所需的框架調(diào)用。 例如酷麦,綁定適配器可以負責調(diào)用setText()方法來設(shè)置text屬性矿卑,或者調(diào)用setOnClickListener()方法來向click事件添加偵聽器。 您可以在android.databinding.adapters包中使用最常見的綁定適配器沃饶,例如本頁示例中使用的android:text屬性的適配器母廷。 有關(guān)常見綁定適配器的列表,請參閱適配器绍坝。 您還可以創(chuàng)建自定義適配器徘意,如以下示例所示:
@BindingAdapter("app:goneUnless")
public static void goneUnless(View view, Boolean visible) {
view.visibility = visible ? View.VISIBLE : View.GONE;
}
將布局視圖綁定到架構(gòu)組件
Android Support
庫包含體系結(jié)構(gòu)組件,您可以使用它們來設(shè)計健壯轩褐,可測試和可維護的應用程序椎咧。 您可以將架構(gòu)組件與Data Binding庫一起使用,以進一步簡化UI的開發(fā)把介。
兩種方式的Data Binding
Data Binding庫支持雙向數(shù)據(jù)綁定
勤讽。 用于這種類型的綁定的表示法支持以下功能:接收屬性的數(shù)據(jù)更改并同時偵聽用戶對該屬性的更新。
翻譯自:Android Develop