為什么寫這篇博客
網上大部分博客,代碼量都比較大,把實際的業務都代入進去了
這篇博客的目的,就是為了講解基本原理和使用思路,然后給出一個最簡單的Demo
這里不講解具體用法,那樣篇幅會太長,直接看Demo代碼就行
什么是ViewBinding
ViewBinding是一項根據布局文件自動生成所有控件對象的技術,類似于ButterKnife
使用ViewBinding,需要在gradle腳本中開啟ViewBinding特性,編譯時會自動生成Layout對應的Binding對象
什么是DataBinding
DataBinding是一項將控件內容與對象數值進行綁定的技術
當控件內容發生改變時,對象數值自動改變
當對象數值發生改變時,控件內容也自動改變
android中的DataBinding,主要是通過ViewModel和LiveData這兩項技術來實現的
使用ViewBinding,需要在gradle腳本中開啟DataBinding特性,這樣才能使用ViewModel相關功能
什么是ViewModel和LiveData
ViewModel是一個特殊的數值容器,它可以與布局中的控件進行雙向綁定,從而實現數值自動同步
ViewModel的生命周期與Activity或Fragment進行綁定,能夠自動銷毀
LiveData也是一個特殊的數值容器,它可以對數值變化進行監聽,從而實現響應式編程特性
ViewModel和LiveData使用方法
定義ViewModel,其中的數值通過LiveData包裝
在xml中,通過layout標簽+data標簽+變量表達式的方式,來讓控件與ViewModel中的值綁定
在Activity中創建ViewModel
在Activity中為ViewModel中的LiveData添加數值監聽
在Activity中為ViewModel設置初始值
將ViewModel與Binding綁定
布局內容發生變化時,LiveData會自動更新
手動修改LiveData時,需要通過setValue或postValue來通知訂閱者
如何通過ViewModel和LiveData實現MVVM架構
創建ViewModel,將布局文件中需要綁定的屬性添加到其中
在ViewModel中創建DataRepository,用于獲取和處理數據,這個類就是負責model層工作
在Activity中,通過ViewModel訂閱DataRepository處理結果,處理結果可以通過LiveData或RxJava來訂閱
源碼
ViewBinding+DataBinding+MVVM.zip