Android Jetpack: DataBinding | 數(shù)據(jù)綁定庫

數(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ù)綁定庫提供了類和方法客蹋,可以輕松地觀察數(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

}?

將布局視圖綁定到體系結(jié)構(gòu)組件

Android支持庫包含架構(gòu)組件,您可以使用它來設(shè)計(jì)健壯著瓶,可測試和可維護(hù)的應(yīng)用程序联予。您可以將架構(gòu)組件與數(shù)據(jù)綁定庫一起使用,以進(jìn)一步簡化UI的開發(fā)蟹但。

雙向數(shù)據(jù)綁定

數(shù)據(jù)綁定庫支持雙向數(shù)據(jù)綁定躯泰。用于此類綁定的表示法支持接收對屬性的數(shù)據(jù)更改并同時(shí)偵聽對該屬性的用戶更新的能力。

其他資源


請參閱Android數(shù)據(jù)綁定庫示例华糖。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末麦向,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子客叉,更是在濱河造成了極大的恐慌诵竭,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兼搏,死亡現(xiàn)場離奇詭異卵慰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)佛呻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門裳朋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吓著,你說我怎么就攤上這事鲤嫡。” “怎么了绑莺?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵暖眼,是天一觀的道長。 經(jīng)常有香客問我纺裁,道長诫肠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任欺缘,我火速辦了婚禮栋豫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谚殊。我一直安慰自己笼才,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布络凿。 她就那樣靜靜地躺著骡送,像睡著了一般。 火紅的嫁衣襯著肌膚如雪絮记。 梳的紋絲不亂的頭發(fā)上摔踱,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機(jī)與錄音怨愤,去河邊找鬼派敷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛撰洗,可吹牛的內(nèi)容都是我干的篮愉。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼差导,長吁一口氣:“原來是場噩夢啊……” “哼试躏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起设褐,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤颠蕴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后助析,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體犀被,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年外冀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寡键。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡雪隧,死狀恐怖西轩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情膀跌,我是刑警寧澤遭商,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站捅伤,受9級特大地震影響劫流,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丛忆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一祠汇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧熄诡,春花似錦可很、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苇本。三九已至,卻和暖如春菜拓,著一層夾襖步出監(jiān)牢的瞬間瓣窄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工纳鼎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俺夕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓贱鄙,卻偏偏與公主長得像劝贸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子逗宁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容