Data Binding Library Teil von Android Jetpack

Die Datenbindungsbibliothek ist eine unterstützende Bibliothek, mit der Sie UI-Komponenten in Ihren Layouts über ein deklaratives Format anstatt programmatisch an Datenquellen in Ihrer Anwendung binden können.

Layouts werden oft in Aktivitäten mit Code definiert, der UI-Framework-Methoden aufruft. Mit dem folgenden Code wird beispielsweise findViewById() aufgerufen, um ein TextView-Widget zu finden und an das Attribut userName der Variablen viewModel zu binden:

Kotlin

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

Java

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

Das folgende Beispiel zeigt, wie Sie die Datenbindungsbibliothek verwenden, um dem Widget direkt in der Layoutdatei Text zuzuweisen. Dadurch muss der oben gezeigte Java-Code nicht mehr aufgerufen werden. Beachten Sie die Verwendung der Syntax @{} im Zuweisungsausdruck:

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

Durch das Binden von Komponenten in die Layoutdatei können Sie viele UI-Framework-Aufrufe aus Ihren Aktivitäten entfernen, sodass sie einfacher und leichter zu verwalten sind. Dies kann auch die Leistung Ihrer Anwendung verbessern und dazu beitragen, Speicherlecks und Null-Pointer-Ausnahmen zu vermeiden.

Datenbindungsbibliothek verwenden

Auf den folgenden Seiten erfahren Sie, wie Sie die Data Binding Library in Ihren Android-Apps verwenden können.

Jetzt starten
Hier erfahren Sie, wie Sie Ihre Entwicklungsumgebung auf die Arbeit mit der Data Binding Library vorbereiten, einschließlich der Unterstützung von Datenbindungscode in Android Studio.

Layouts und Bindungsausdrücke

Mit der Ausdruckssprache können Sie Ausdrücke schreiben, die Variablen mit den Ansichten im Layout verbinden. Die Datenbindungsbibliothek generiert automatisch die Klassen, die erforderlich sind, um die Ansichten im Layout mit Ihren Datenobjekten zu verknüpfen. Die Bibliothek bietet Features wie Importe, Variablen und Elemente, die Sie in Ihren Layouts verwenden können.

Diese Funktionen der Bibliothek stehen nahtlos mit Ihren bestehenden Layouts zusammen. Die Bindungsvariablen, die in Ausdrücken verwendet werden können, werden beispielsweise in einem data-Element definiert, das dem Stammelement des UI-Layouts auf gleicher Ebene ist. Beide Elemente sind in einem layout-Tag zusammengefasst, wie im folgenden Beispiel gezeigt:

<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>

Mit beobachtbaren Datenobjekten arbeiten
Die Datenbindungsbibliothek bietet Klassen und Methoden, um Daten ganz einfach auf Änderungen zu beobachten. Sie müssen die UI nicht aktualisieren, wenn sich die zugrunde liegende Datenquelle ändert. Sie können Ihre Variablen oder ihre Eigenschaften beobachtbar machen. Mit der Bibliothek können Objekte, Felder oder Sammlungen beobachtbar gemacht werden.
Generierte Bindungsklassen
Die Datenbindungsbibliothek generiert Bindungsklassen, über die auf die Variablen und Ansichten des Layouts zugegriffen wird. Auf dieser Seite erfahren Sie, wie Sie generierte Bindungsklassen verwenden und anpassen.
Bindungsadapter
Für jeden Layoutausdruck gibt es einen Bindungsadapter, der die Framework-Aufrufe erfordert, um die entsprechenden Attribute oder Listener festzulegen. Der Bindungsadapter kann beispielsweise die Methode setText() aufrufen, um das Textattribut festzulegen, oder die Methode setOnClickListener() aufrufen, um dem Klickereignis einen Listener hinzuzufügen. Die gängigsten Bindungsadapter wie die Adapter für das Attribut android:text, die in den Beispielen auf dieser Seite verwendet werden, können Sie im Paket android.databinding.adapters verwenden. Eine Liste der gängigen Bindungsadapter finden Sie unter Adapter. Sie können auch benutzerdefinierte Adapter erstellen, wie im folgenden Beispiel gezeigt:

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;
}

Layoutansichten an Architekturkomponenten binden
Die Android Support Library enthält die Architekturkomponenten, mit denen Sie robuste, testbare und wartbare Anwendungen entwickeln können. Sie können die Architekturkomponenten mit der Datenbindungsbibliothek verwenden, um die Entwicklung Ihrer UI weiter zu vereinfachen.
Zweiwege-Datenbindung
Die Datenbindungsbibliothek unterstützt die bidirektionale Datenbindung. Die für diese Art von Bindung verwendete Notation unterstützt die Möglichkeit, Datenänderungen an einem Attribut zu empfangen und gleichzeitig Nutzeraktualisierungen für diese Eigenschaft zu überwachen.

Weitere Informationen

Weitere Informationen zur Datenbindung finden Sie in den folgenden zusätzlichen Ressourcen.

Produktproben

Codelabs

Blogposts