資料繫結程式庫 Android Jetpack 的一部分。
資料繫結程式庫是一種支援資料庫,可讓您使用宣告式格式 (而非程式輔助) 將版面配置中的 UI 元件繫結至應用程式中的資料來源。
版面配置通常是透過會呼叫 UI 架構方法的程式碼在活動中定義。舉例來說,以下程式碼會呼叫 findViewById()
以尋找 TextView
小工具,並繫結至 viewModel
變數的 userName
屬性:
Kotlin
findViewById<TextView>(R.id.sample_text).apply { text = viewModel.userName }
Java
TextView textView = findViewById(R.id.sample_text); textView.setText(viewModel.getUserName());
以下範例說明如何使用資料繫結程式庫,直接在版面配置檔案中將文字指派給小工具。這樣就不必呼叫上述任何 Java 程式碼。請注意,指派運算式中使用 @{}
語法:
<TextView
android:text="@{viewmodel.userName}" />
版面配置檔案中的繫結元件可讓您移除活動中的許多 UI 架構呼叫,使其更加簡單且易於維護。這也可以改善應用程式效能,避免發生記憶體流失及空值指標例外狀況。
使用資料繫結程式庫
請參閱以下頁面,瞭解如何在 Android 應用程式中使用資料繫結程式庫。
- 開始使用
- 瞭解如何讓開發環境準備好與資料繫結程式庫搭配使用,包括 Android Studio 中的資料繫結程式碼支援功能。
運算式語言可讓您編寫運算式,將變數連結至版面配置中的檢視畫面。資料繫結程式庫會自動產生將版面配置中的檢視畫面與資料物件繫結所需的類別。程式庫提供匯入和變數等功能,以及可用於版面配置的功能。
這些程式庫的功能可完美地與現有版面配置並存。舉例來說,可在運算式中使用的繫結變數定義在 data
元素內,是 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>
- 使用可觀察的資料物件
- 資料繫結程式庫提供類別和方法,可讓您輕鬆觀測資料變化。您不需要在基礎資料來源變更時重新整理 UI。您可以將變數或其屬性設為可觀察。這個程式庫讓您可以觀察物件、欄位或集合。
- 產生的繫結類別
- 資料繫結程式庫會產生繫結類別,用於存取版面配置的變數和檢視畫面。本頁面說明如何使用及自訂產生的繫結類別。
- 繫結轉接器
- 每個版面配置運算式都有繫結轉接器,發出架構呼叫以設定對應屬性或事件監聽器。舉例來說,繫結轉接器可呼叫
setText()
方法來設定文字屬性,或是呼叫setOnClickListener()
方法,將事件監聽器加入點擊事件。最常見的繫結轉接器 (例如本頁範例中所用android:text
屬性的轉接程式) 可於android.databinding.adapters
套件中使用。如需常見的繫結轉接器清單,請參閱轉接程式。您也可以建立自訂轉接程式,如以下範例所示:
Kotlin
@BindingAdapter("app:goneUnless") fun goneUnless(view: View, visible: Boolean) { view.visibility = if (visible) View.VISIBLE else View.GONE }
Java
@BindingAdapter("app:goneUnless") public static void goneUnless(View view, Boolean visible) { view.visibility = visible ? View.VISIBLE : View.GONE; }
- 對架構元件的繫結版面配置視圖
- Android 支援資料庫包含架構元件,可用來設計完善且可供測試及維護的應用程式。您可以將架構元件與資料繫結程式庫搭配使用,進一步簡化 UI 的開發作業。
- 雙向資料繫結
- 資料繫結程式庫支援雙向資料繫結。用於這類繫結的標記可讓您接收屬性的資料變更,並同時監聽該屬性的使用者更新。
其他資源
如要進一步瞭解資料繫結,請參閱下列其他資源。
範例
程式碼研究室
網誌文章
為您推薦
- 注意:系統會在 JavaScript 關閉時顯示連結文字
- 繫結轉接器 {:#binding-adapters}
- 版面配置與繫結的運算式
- 產生的繫結類別 {: #binding-classes}