Library Data Binding Bagian dari Android Jetpack.
Library Data Binding adalah library dukungan yang memungkinkan Anda mengikat UI komponen dalam tata letak ke sumber data di aplikasi Anda menggunakan format teks yang berbeda, bukan secara terprogram.
{i>Layout<i} sering ditentukan dalam aktivitas dengan kode yang memanggil framework UI
metode. Misalnya, kode di bawah 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 di file tata letak. Hal ini menghilangkan keharusan memanggil
kode Java yang ditampilkan di atas. Perhatikan penggunaan sintaksis @{}
dalam tugas
ekspresi:
<TextView
android:text="@{viewmodel.userName}" />
Mengikat komponen dalam file tata letak memungkinkan Anda menghapus banyak panggilan framework UI di aktivitas Anda, membuatnya lebih sederhana dan lebih mudah dikelola. Hal ini juga dapat meningkatkan performa aplikasi Anda dan membantu mencegah kebocoran memori dan pointer null setiap pengecualian.
Menggunakan Library Data Binding
Gunakan halaman berikut untuk mempelajari cara menggunakan Library Data Binding dalam Android.
- Mulai
- Pelajari cara menyiapkan lingkungan pengembangan Anda agar berfungsi dengan Data Library Binding, termasuk dukungan untuk kode data binding di Android Studio.
Tata letak dan ekspresi binding
Bahasa ekspresi memungkinkan Anda untuk menulis ekspresi yang menghubungkan variabel ke tampilan dalam tata letak. Library Data Binding secara otomatis menghasilkan class yang diperlukan untuk mengikat tampilan dalam tata letak dengan data Anda objek terstruktur dalam jumlah besar. Library ini menyediakan fitur seperti impor, variabel, dan yang dapat Anda gunakan dalam {i>layout<i}.
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 ini digabungkan dalam tag layout
, seperti yang ditunjukkan di bawah ini
contoh:
<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 data dengan mudah untuk perubahan. Anda tidak perlu khawatir untuk me-refresh UI saat perubahan sumber data yang mendasarinya. Anda dapat membuat variabel atau properti yang dapat diamati. Library ini memungkinkan Anda membuat objek, kolom, atau koleksi data yang dapat diamati.
- Class binding yang dihasilkan
- Library Data Binding menghasilkan class binding yang digunakan untuk mengakses untuk variabel dan tampilan tata letak. Halaman ini menunjukkan cara menggunakan dan menyesuaikan class binding yang dihasilkan.
- Adaptor binding
- Untuk setiap ekspresi tata letak, terdapat adaptor binding yang membuat
panggilan framework yang diperlukan untuk menetapkan properti atau pemroses yang sesuai. Sebagai
misalnya, adaptor binding dapat menangani panggilan metode
setText()
untuk menyetel properti teks atau panggil metodesetOnClickListener()
untuk menambahkan ke peristiwa klik. Adaptor binding yang paling umum, seperti adaptor untuk propertiandroid:text
yang digunakan dalam contoh di halaman ini, tersedia untuk Anda gunakan dalam paketandroid.databinding.adapters
. Untuk mengetahui 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 Arsitektur Komponen, yang dapat Anda gunakan untuk merancang aplikasi yang tangguh, mudah diuji, dan mudah dikelola. Anda dapat menggunakan Arsitektur Komponen dengan Library Data Binding untuk lebih menyederhanakan pengembangan UI Anda.
- 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 pembaruan pengguna pada properti tersebut secara bersamaan.
Referensi lainnya
Untuk mempelajari data binding lebih lanjut, lihat referensi berikut resource tambahan.
Contoh
Codelab
Postingan blog
Direkomendasikan untuk Anda
- Catatan: teks link ditampilkan saat JavaScript nonaktif
- Adaptor binding {:#binding-adapters}
- Tata letak dan ekspresi binding
- Class binding yang dihasilkan {: #binding-classes}