Sunday, December 10, 2017

Android Data Binding

Salah satu hal yang cukup melelahkan dalam Android development adalah mendeklarasikan komponen UI dan menggunakan findViewById secara berulang-ulang. Adanya external library ButterKnife yang membuat code lebih rapi, terstruktur dan menghilangkan penggunaan findViewById secara berulang-ulang. Blog tentang ButterKnife bisa dilihat disini

Pada Google I/O 2015, Google mengeluarkan Data Binding Library untuk Android. Tujuan data binding adalah untuk declarative layout dan meminimalisir penggunaan kode untuk mengikat application logic dan komponen layout. Sebelumnya, kita lihat dulu contoh penggunaan findViewById dan ButterKnife. Berikut adalah contoh layout xml


Jika menggunakan findViewById, pada class Activity bisa dibuat seperti ini

cukup merepotkan jika kita mempunyai banyak komponen UI. Selanjutnya jika menggunakan ButterKnife, pada class Activity bisa dibuat seperti ini

Bisa dilihat dengan ButterKnife dapat menghilangkan penggunaan findViewById berulang-ulang dan membuat code lebih rapi. Selanjutnya adalah bagaimana cara menggunakan data binding.

1. Enable DataBinding di App.Gradle


2. Create POJO if necessary, ie:


3. Wrap Parent ViewGroup in <layout> tag. Define meta data of binding in <data> tag and set the variables defined <data> tag in binding.

Bisa dilihat data variable User di-bind dengan TextView (pada atribut "android:text"). Untuk "user.nama" dan "user.address" mengikuti dari POJO yang dibuat. 

4. Inflate layout using DataBindingUtil in Activity or Fragment Class. ie:


Hasilnya TextView yang sudah di-bind tadi akan menjadi "Haris" dan "Jl. Kartika Pinang". Dengan databinding, kita tidak perlu lagi mengetik findViewById ataupun @BindView. Selain itu, dengan databinding kita bisa menyediakan sedikit simple logic pada xml layout, contoh:
databinding di android nantinya digunakan dengan MVVM pattern.
Lebih lengkap mengenai  databinding bisa dilihat disini. Semoga membantu/

PS: Please correct me if I'm wrong :)

Reference:

No comments:

Post a Comment