Register now for Android Dev Summit 2019!

Library Data Binding

Library Data Binding   Bagian dari Android Jetpack.

Library Data Binding adalah library dukungan yang memungkinkan Anda mengikat komponen UI pada tata letak ke sumber data di aplikasi Anda menggunakan format deklaratif, bukan secara terprogram.

Tata letak sering ditentukan dalam aktivitas dengan kode yang memanggil metode framework UI. Misalnya, kode di bawah ini memanggil findViewById() untuk menemukan widget TextView dan mengikatnya ke properti userName variabel viewModel:

Kotlin

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

    

Java

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

    

Contoh berikut menunjukkan cara menggunakan Library Data Binding untuk menetapkan teks ke widget secara langsung dalam file tata letak. Dengan cara ini, Anda tidak perlu lagi memanggil salah satu kode Java yang ditampilkan di atas. Perhatikan penggunaan sintaks @{} dalam ekspresi penetapan:

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

Dengan mengikat komponen dalam file tata letak, Anda dapat menghapus banyak panggilan framework UI dalam aktivitas, yang menjadikannya lebih sederhana dan lebih mudah dikelola. Hal ini juga dapat meningkatkan performa aplikasi Anda dan membantu mencegah kebocoran memori dan pengecualian pointer null.

Menggunakan Library Data Binding

Gunakan halaman berikut untuk mempelajari cara menggunakan Library Data Binding pada aplikasi Android Anda.

Memulai
Pelajari cara menyiapkan lingkungan pengembangan Anda agar berfungsi dengan Library Data Binding, termasuk dukungan untuk kode data binding, di Android Studio.

Ekspresi tata letak dan binding

Bahasa ekspresi memungkinkan Anda menulis ekspresi yang menghubungkan variabel ke tampilan pada tata letak. Library Data Binding otomatis menghasilkan class yang diperlukan untuk mengikat tampilan pada tata letak dengan objek data Anda. Library ini menyediakan fitur seperti impor, variabel, dan mencakup elemen yang dapat Anda gunakan pada tata letak.

Fitur-fitur library tersebut bekerja berdampingan dengan tata letak yang ada. Misalnya, variabel binding yang dapat digunakan dalam ekspresi ditetapkan dalam elemen data yang merupakan sibling dari elemen root tata letak UI. Kedua elemen ini digabungkan dalam tag layout, seperti ditunjukkan dalam contoh berikut:

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

Menggunakan objek data yang dapat diamati
Library Data Binding menyediakan class dan metode untuk mengamati perubahan data dengan mudah. Anda tidak perlu mengkhawatirkan pemuatan ulang UI saat sumber data yang mendasarinya berubah. Variabel atau properti menjadi mudah diamati. Dengan library ini, objek, kolom, atau koleksi menjadi dapat diamati.
Class binding yang dihasilkan
Library Data Binding menghasilkan class binding yang digunakan untuk mengakses variabel dan tampilan tata letak. Halaman ini menunjukkan kepada Anda cara menggunakan dan menyesuaikan class binding yang dihasilkan.
Adaptor binding
Untuk setiap ekspresi tata letak, terdapat adaptor binding yang mengharuskan panggilan framework untuk menetapkan properti atau listener yang sesuai. Misalnya, adaptor binding dapat menangani panggilan metode setText() untuk menetapkan properti teks atau memanggil metode setOnClickListener() untuk menambahkan listener ke peristiwa klik. Adaptor binding yang paling umum, seperti adaptor untuk properti android:text yang digunakan dalam contoh di halaman ini, tersedia untuk Anda gunakan dalam paket android.databinding.adapters. Untuk daftar adaptor binding yang umum, lihat adaptor. Anda juga dapat membuat adaptor kustom, seperti ditunjukkan pada contoh berikut:

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

    
Mengikat tampilan tata letak ke Komponen Arsitektur
Android Support Library mencakup Komponen Arsitektur, yang dapat Anda gunakan untuk merancang aplikasi yang kuat, dapat diuji, dan mudah dikelola. Anda dapat menggunakan Komponen Arsitektur dengan Library Data Binding untuk semakin menyederhanakan pengembangan UI.
Data binding dua arah
Library Data Binding mendukung binding data dua arah. Notasi yang digunakan untuk jenis binding ini mendukung kemampuan untuk menerima perubahan data properti dan secara bersamaan memantau pembaruan yang dibuat pengguna atas properti tersebut.

Referensi lainnya

Untuk mempelajari data binding lebih lanjut, lihat referensi tambahan berikut.

Sampel

Codelab

Entri blog