Datenbindungsbibliothek Teil von Android Jetpack

Die Datenbindungsbibliothek ist eine Supportbibliothek zum Binden von UI-Elementen. Komponenten in Ihren Layouts zu Datenquellen in Ihrer App hinzufügen. Verwenden Sie dazu ein deklaratives statt programmatisch.

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

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 mit der Datenbindungsbibliothek Text zuweisen. das Widget direkt in der Layoutdatei hinzuzufügen. Dadurch müssen Sie keine der den oben gezeigten Java-Code. Beachten Sie, dass in der Zuweisung die Syntax @{} verwendet wird. Ausdruck:

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

Durch das Binden von Komponenten in die Layoutdatei können Sie viele UI-Framework-Aufrufe in um sie einfacher zu verwalten und zu verwalten. Dies kann auch die Leistung deiner App zu verbessern und Speicherlecks und Nullzeiger zu vermeiden Ausnahmen.

Datenbindungsbibliothek verwenden

Auf den folgenden Seiten erfahren Sie, wie Sie die Datenbindungsbibliothek in Ihrem Android-Apps.

Erste Schritte
Hier erfahren Sie, wie Sie Ihre Entwicklungsumgebung auf die Arbeit mit den Daten vorbereiten. Bindungsbibliothek, einschließlich Unterstützung für Datenbindungscode in Android Studio.

Layouts und Bindungsausdrücke

Mit der Ausdruckssprache können Sie Ausdrücke schreiben, die Variablen zu den Ansichten im Layout hinzufügen. Die Datenbindungsbibliothek wird automatisch generiert die Klassen, die zum Binden der Ansichten im Layout mit Ihren Daten erforderlich sind. Objekte. Die Bibliothek bietet Funktionen wie Importe, Variablen und die Sie in Ihren Layouts verwenden können.

Diese Funktionen der Bibliothek koexistieren nahtlos mit Ihren bestehenden Layouts. Beispielsweise werden die Bindungsvariablen, die in Ausdrücken verwendet werden können, definiert, innerhalb eines data-Elements, das dem Stammelement des UI-Layouts übergeordnet ist Beide Elemente sind in ein layout-Tag umschlossen, wie im Folgenden gezeigt: Beispiel:

<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 Data Binding Library bietet Klassen und Methoden zur einfachen Beobachtung von Daten für Änderungen. Sie müssen die Benutzeroberfläche nicht aktualisieren, Änderungen der zugrunde liegenden Datenquelle. Sie können Ihre Variablen oder ihre beobachtbar sind. Mit der Bibliothek können Sie Objekte, Felder oder zu beobachten.
Generierte Bindungsklassen
Die Datenbindungsbibliothek generiert Bindungsklassen, die für den Zugriff auf die Variablen und Ansichten ändern. Auf dieser Seite erfahren Sie, wie Sie erzeugte Bindungsklassen.
Bindungsadapter
Für jeden Layoutausdruck gibt es einen Bindungsadapter, der die Methode Framework-Aufrufen, die zum Festlegen der entsprechenden Properties oder Listener erforderlich sind. Für Beispielsweise kann der Bindungsadapter den Aufruf der Methode setText() übernehmen. um die Texteigenschaft festzulegen, oder rufen Sie die Methode setOnClickListener() auf, um ein Listener für das Click-Event. Die gängigsten Bindungsadapter, wie der die Adapter für das Attribut android:text, die in den Beispielen auf dieser Seite verwendet werden, können im android.databinding.adapters-Paket verwendet werden. 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 Architektur Komponenten, mit denen Sie robuste, testbare und wartbare Anwendungen entwickeln. Sie können die Architektur Komponenten mit der Datenbindungsbibliothek zur weiteren Vereinfachung der Entwicklung Ihrer UI.
Zweiwege-Datenbindung
Die Datenbindungsbibliothek unterstützt die bidirektionale Datenbindung. Die für Diese Art von Bindung unterstützt die Möglichkeit, Datenänderungen an einer Property zu empfangen. und gleichzeitig die Nutzeraktualisierungen für diese Property beobachten.

Weitere Informationen

Weitere Informationen zur Datenbindung finden Sie hier: zusätzliche Ressourcen.

Produktproben

Codelabs

Blogposts