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