データ バインディング ライブラリ 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 があり、これを使用して、 堅牢でテストと保守が容易なアプリを設計します。アーキテクチャの 開発をさらに簡素化する、データ バインディング ライブラリを含むコンポーネント 向上します
- 双方向データ バインディング
- データ バインディング ライブラリは、双方向データ バインディングをサポートしています。指標タイプに使用される表記は、 このタイプのバインディングでは、プロパティに対するデータ変更を受け取る機能がサポートされます そのプロパティに対するユーザーの更新を同時にリッスンできます
参考情報
データ バインディングについて詳しくは、以下をご覧ください。 追加リソースをご覧ください
サンプル
- <ph type="x-smartling-placeholder"></ph> Android データ バインディング ライブラリのサンプル
Codelab
- <ph type="x-smartling-placeholder"></ph> Android データ バインディングの Codelab
ブログ投稿
あなたへのおすすめ
- 注: JavaScript がオフになっている場合はリンクテキストが表示されます
- バインディング アダプター {:#binding-adapters}
- レイアウトとバインディング式
- 生成されたバインディング クラス {: #binding-classes}