數(shù)據(jù)綁定庫是一個(gè)支持庫贮尖,允許您使用聲明性格式而不是以編程方式將布局中的UI組件綁定到應(yīng)用程序中的數(shù)據(jù)源蹬蚁。
布局通常在具有調(diào)用UI框架方法的代碼的活動(dòng)中定義薇组。例如外臂,下面的代碼調(diào)用findViewById()查找TextView窗口小部件并將其綁定到變量的userName屬性?viewModel:
findViewById<TextView>(R.id.sample_text).apply {? ?
????text = viewModel.userName
}?
以下示例說明如何使用數(shù)據(jù)綁定庫直接在布局文件中將文本分配給窗口小部件。這消除了調(diào)用上面顯示的任何Java代碼的需要律胀。注意@{}在賦值表達(dá)式中使用語法:
<TextView android:text="@{viewmodel.userName}" />
布局文件中的綁定組件允許您在活動(dòng)中刪除許多UI框架調(diào)用宋光,使其更簡單,更易于維護(hù)炭菌。這還可以提高應(yīng)用程序的性能罪佳,并有助于防止內(nèi)存泄漏和空指針異常。
使用數(shù)據(jù)綁定庫
使用以下頁面了解如何在Android應(yīng)用程序中使用數(shù)據(jù)綁定庫黑低。
開始? ??
????了解如何使您的開發(fā)環(huán)境隨時(shí)可以使用數(shù)據(jù)綁定庫赘艳,包括支持Android Studio中的數(shù)據(jù)綁定代碼。
布局和綁定表達(dá)式? ??
????表達(dá)式語言允許您編寫將變量連接到布局中視圖的表達(dá)式克握。數(shù)據(jù)綁定庫自動(dòng)生成將布局中的視圖與數(shù)據(jù)對象綁? ?定所需的類蕾管。該庫提供了可在布局中使用的導(dǎo)入,變量和包含等功能玛荞。
????庫的這些功能與您現(xiàn)有的布局無縫共存娇掏。例如,可以在表達(dá)式中使用的綁定變量在data元素內(nèi)定義勋眯,該元素是UI布局的根元素的兄弟婴梧。兩個(gè)元素都包含在layout標(biāo)記中,如以下示例所示:
<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>
數(shù)據(jù)綁定庫提供了類和方法客蹋,可以輕松地觀察數(shù)據(jù)以進(jìn)行更改塞蹭。您不必?fù)?dān)心在基礎(chǔ)數(shù)據(jù)源發(fā)生更改時(shí)刷新UI。您可以觀察變量或其屬性讶坯。該庫允許您使對象番电,字段或集合可觀察。
數(shù)據(jù)綁定庫生成用于訪問布局的變量和視圖的綁定類辆琅。此頁面顯示如何使用和自定義生成的綁定類漱办。
對于每個(gè)布局表達(dá)式,都有一個(gè)綁定適配器婉烟,它使得設(shè)置相應(yīng)屬性或偵聽器所需的框架調(diào)用娩井。例如,綁定適配器可以負(fù)責(zé)調(diào)用setText()方法來設(shè)置text屬性似袁,或者調(diào)用setOnClickListener()方法來為click事件添加監(jiān)聽器洞辣。最常見的綁定適配器(例如android:text本頁示例中使用的屬性的適配器)可供您在android.databinding.adapters包中使用咐刨。有關(guān)常用綁定適配器的列表,請參閱?適配器扬霜。您還可以創(chuàng)建自定義適配器定鸟,如以下示例所示:
@BindingAdapter("app:goneUnless")
fun goneUnless(view: View, visible: Boolean) {? ?
????view.visibility = if (visible) View.VISIBLE else View.GONE
}?
Android支持庫包含架構(gòu)組件,您可以使用它來設(shè)計(jì)健壯著瓶,可測試和可維護(hù)的應(yīng)用程序联予。您可以將架構(gòu)組件與數(shù)據(jù)綁定庫一起使用,以進(jìn)一步簡化UI的開發(fā)蟹但。
數(shù)據(jù)綁定庫支持雙向數(shù)據(jù)綁定躯泰。用于此類綁定的表示法支持接收對屬性的數(shù)據(jù)更改并同時(shí)偵聽對該屬性的用戶更新的能力。
其他資源
請參閱Android數(shù)據(jù)綁定庫示例华糖。