Data Binding Android Kotlin (Part 1)

Một trong những câu lệnh thần thánh bất cứ người học Android nào cũng từng sử dụng rất nhiều

c10fb01d-19ac-446f-838a-189810dc8342

 

Từ phiên bản Android M thư viện Data Binding giúp chúng ta không cần viết nhiều code để đưa data vào các component trên layout. Việc đơn giản là có các “layout template”, ” data holder” , chỉ cần định nghĩa nguồn dữ liệu, chúng sẽ tự hiển thị theo data tương ứng (Mô hình MVVM)

 

Cài đặt 

 

apply plugin: 'kotlin-kapt' ==> level app

 

kapt 'com.android.databinding:compiler:3.0.1' ==> level app

 

2. Binding dữ liệu 

Chúng ta sẽ bắt đầu bằng việc tạo 1 layout trong file xml . Screen Shot 2018-04-10 at 9.49.28 AM

Chúng ta cần 1 Object User để lưu thông tin user. Screen Shot 2018-04-10 at 9.51.48 AM

Tiếp đó trong MainActivity : Screen Shot 2018-04-10 at 9.53.56 AM.png

Khi bạn thêm thẻ <data> <variable </>…….. </data> vào trong file xmll layout thì Android Studio sẽ tự động sinh ra cho bạn class ActivityMainBinding , ta chỉ cần gọi mà không cần khai báo gì .

Phương thức binding.setXXX(object) để set dữ liệu hiển thị lên layout.

XXX tương ứng với tên thuộc tính mà ta khai báo ở thẻ <variable>

Bây h có thể run project để xem thành quả:

Screen Shot 2018-04-10 at 10.00.54 AM

Đây là cách binding dữ liệu cơ bản nhất, chúng ta binding dữ liệu có sẵn hiển thị lên view. Khi có sự thay đổi dữ liệu chúng ta cần set lại thuộc tính. Trước kia khi chưa có Kotlin  ta cần phải thêm annotation @Bindable, sử dụng biến kiểu ObservableField….

Tuy nhiên hiện nay Kotlin support luôn, khi có thay đổi chỉ cần set lại thuộc tính:

Screen Shot 2018-04-10 at 10.05.25 AM.png

Kết quả như sau:

Screen Shot 2018-04-10 at 10.07.43 AM

Ngoài việc sử dụng để binding text lên View thì bạn có thể dùng BindingData hiển thị bất cứ thứ gì bạn muốn lên View:

 android:textColor="@{user.textColor}"
    android:textSize="@{user.textSize}"
    android:src="@{user.iamge}"

Leave a comment