MVVM là 1 design pattern trong Android, mục đích cải thiện kiến trúc của ứng dụng, dễ dàng phát triển, gỡ lỗi, testing,…
MVVM là : Model, ViewModel, View* Model là các class chứa Data, business logic.* ViewModel: Là class định nghĩa bussiness của View, không bị rằng buộc với View.* View: Là Activity, Fragment.
Trong MVVM Nhiều View cùng tham chiếu được tới 1 ViewModel, 1 View chỉ có thế tham chiếu tới 1 ViewModel
Data binding là 1 thư viện, giúp rằng buộc dữ liệu giữa View và class logic Kotlin, Java.
Nói thế chắc chả hiểu lắm, chúng ta đi viết 1 màn hình đăng ký đơn giản.
Cấu trúc package
Tạo cấu trúc package như hình dưới:

Model
Trong package Models, tạo RegisterDataModel.kt định nghĩa cấu trúc data. Thông tin nhập vào chỉ có username, password, country:
Tạo Register.kt định nghĩa business cho Chức năng đăng nhập:
ViewModel
Trong package viewmodels, tạo RegisterViewModel.kt định nghĩa business view:
@Bindable là chú thích nơi data sẽ rằng buộc.
Định nghĩa 1 custom thuộc tính toastMessageAction, ta sẽ Toast message của nó ra màn hình:
View
Trong package views
Ta rằng buộc data giữa View với ViewModel:
Đoạn này định nghĩa ViewModel được sử dụng:
Đoạn này sẽ rằng buộc Editext với dữ liệu trong ViewModel, giá trị của Editext là giá trị của RegisterViewModel.username, khi 1 trong 2 thay đổi thì phía còn lại cũng thay đổi:
Đoạn này sử dụng custom thuộc tính bind:toastMessageAction:
Trong MainActivity.kt, ta định nghĩa layout và ViewModel được sử dụng:
URL QR