データ バインディング ライブラリ Android Jetpack の一部。

データ バインディング ライブラリは、UI のバインドを可能にするサポート ライブラリです。 アプリのデータソースに宣言型を使用して、レイアウト内のコンポーネントを 形式にする必要があります。

レイアウトは多くの場合、UI フレームワークを呼び出すコードを含むアクティビティで定義される あります。たとえば、以下のコードは findViewById() を呼び出してウィジェットをTextView検索し、userName viewModel 変数:

Kotlin

findViewById<TextView>(R.id.sample_text).apply {
    text = viewModel.userName
}

Java

TextView textView = findViewById(R.id.sample_text);
textView.setText(viewModel.getUserName());

次の例は、データ バインディング ライブラリを使用してテキストを割り当てる方法を示しています。 レイアウトファイルで直接ウィジェットに 追加できますこれにより、 必要があります。割り当てで @{} 構文が使用されていることに注目 expression:

<TextView
    android:text="@{viewmodel.userName}" />

レイアウト ファイル内のバインディング コンポーネントを使用すると、 管理しやすくなります。また、 アプリのパフォーマンスを向上させ、メモリリークや null ポインタを防止します。 例外があります。

データ バインディング ライブラリの使用

次のページでは、Terraform でデータ バインディング ライブラリを使用する Android アプリ。

スタートガイド
開発環境でデータを使用できるようにする方法を学習します バインディング ライブラリ(Android Studio でのデータ バインディング コードのサポートを含む)。

レイアウトとバインディング式

式言語を使用すると、複数の要素からなる 変数をレイアウト内のビューにマッピングします。データ バインディング ライブラリは、 レイアウト内のビューをデータにバインドするために必要なクラスを生成します。 説明します。このライブラリには、インポート、変数、 レイアウトで使用できるインクルードがあります

ライブラリのこれらの機能は、既存のレイアウトとシームレスに共存します。 たとえば、式で使用できるバインディング変数は、 UI レイアウトのルート要素の兄弟要素である data 要素内。 次のように、両方の要素が 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 を更新する必要は 基になるデータソースの変更です変数や プロパティを監視できます。このライブラリを使用すると、オブジェクト、フィールド、 コレクションをオブザーバブルにします。
生成されたバインディング クラス
データ バインディング ライブラリは、バインディング クラスを生成して、これを使用して ビューを作成します。このページでは、Google Meet を使用して 生成されたバインディング クラス
バインディング アダプター
各レイアウト式には、 対応するプロパティやリスナーを設定するために必要なフレームワーク呼び出しです。対象 たとえば、バインディング アダプターが setText() メソッドの呼び出しを処理します。 text プロパティを設定するか、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 Support Library には、Architecture Components があり、これを使用して、 堅牢でテストと保守が容易なアプリを設計します。アーキテクチャの 開発をさらに簡素化する、データ バインディング ライブラリを含むコンポーネント 向上します
双方向データ バインディング
データ バインディング ライブラリは、双方向データ バインディングをサポートしています。指標タイプに使用される表記は、 このタイプのバインディングでは、プロパティに対するデータ変更を受け取る機能がサポートされます そのプロパティに対するユーザーの更新を同時にリッスンできます

参考情報

データ バインディングについて詳しくは、以下をご覧ください。 追加リソースをご覧ください

サンプル

Codelab

ブログ投稿