Library Data Binding Bagian dari Android Jetpack.
Library Data Binding adalah library dukungan yang memungkinkan Anda mengikat komponen UI dalam tata letak ke sumber data dalam aplikasi menggunakan format deklaratif, bukan secara terprogram.
Tata letak sering ditentukan dalam aktivitas dengan kode yang memanggil metode framework UI. Misalnya, kode berikut memanggil findViewById() untuk menemukan widget
TextView dan mengikatnya ke properti userName dari 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 demikian, Anda tidak perlu memanggil kode Java yang ditampilkan di atas. Perhatikan penggunaan sintaksis @{} dalam ekspresi penetapan:
<TextView
android:text="@{viewmodel.userName}" />
Dengan mengikat komponen dalam file tata letak, Anda dapat menghapus banyak panggilan framework UI dalam aktivitas, sehingga membuatnya 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 di aplikasi Android Anda.
- Mulai
- Pelajari cara menyiapkan lingkungan pengembangan Anda untuk menggunakan Library Data Binding, termasuk dukungan untuk kode data binding di Android Studio.
Tata letak dan ekspresi binding
Bahasa ekspresi memungkinkan Anda menulis ekspresi yang menghubungkan variabel ke tampilan dalam tata letak. Library Data Binding otomatis membuat class yang diperlukan untuk mengikat tampilan dalam tata letak dengan objek data Anda. Library ini menyediakan fitur seperti impor, variabel, dan include yang dapat Anda gunakan dalam tata letak.
Fitur-fitur library tersebut bekerja berdampingan dengan tata letak yang ada.
Misalnya, variabel binding yang dapat digunakan dalam ekspresi ditentukan
di dalam elemen data yang merupakan seinduk dari elemen root tata letak UI.
Kedua elemen digabungkan dalam tag layout, seperti yang 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. Anda tidak perlu khawatir untuk me-refresh UI saat sumber data yang mendasarinya berubah. Anda dapat membuat variabel atau propertinya dapat diamati. Library ini memungkinkan Anda membuat objek, kolom, atau koleksi dapat diamati.
- Class binding yang dihasilkan
- Library Data Binding menghasilkan class binding yang digunakan untuk mengakses variabel dan tampilan tata letak. Halaman ini menunjukkan cara menggunakan dan menyesuaikan class binding yang dihasilkan.
- Adaptor binding
Untuk setiap ekspresi tata letak, ada adaptor binding yang membuat panggilan framework yang diperlukan untuk menetapkan properti atau pemroses yang sesuai. Misalnya, adaptor binding dapat menangani pemanggilan metode
setText()untuk menetapkan properti teks atau memanggil metodesetOnClickListener()untuk menambahkan pemroses ke peristiwa klik. Adaptor binding yang paling umum, seperti adaptor untuk propertiandroid:textyang digunakan dalam contoh di halaman ini, tersedia untuk Anda gunakan dalam paketandroid.databinding.adapters. Untuk mengetahui daftar adaptor binding umum, lihat adaptor. Anda juga dapat membuat adaptor kustom, seperti yang ditunjukkan dalam 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 menyertakan Komponen Arsitektur, yang dapat Anda gunakan untuk mendesain aplikasi yang tangguh, dapat diuji, dan mudah dikelola. Anda dapat menggunakan Komponen Arsitektur dengan Library Data Binding untuk lebih menyederhanakan pengembangan UI.
- Data binding dua arah
- Library Data Binding mendukung data binding dua arah. Notasi yang digunakan untuk jenis binding ini mendukung kemampuan untuk menerima perubahan data pada properti dan memproses update pengguna pada properti tersebut secara bersamaan.
Referensi lainnya
Untuk mempelajari data binding lebih lanjut, lihat referensi tambahan berikut.
Contoh
Codelab
Postingan blog
Direkomendasikan untuk Anda
- Catatan: teks link ditampilkan saat JavaScript nonaktif
- Adaptor binding
- Tata letak dan ekspresi binding
- Class binding yang dihasilkan