【每日一文】初探MVVM

圖片發(fā)自簡書App

1、先介紹MVVM歷史吧

? ? ?MVVM (Model — View — ViewModel)最初是在2005年由微軟提出的一個 UI 架構概念。相比 MVP 模式,MVVM 降 Presenter 改為了 ViewModel,同時實現(xiàn) View 和 ViewModel 的雙向綁定。View 層的變化會自動導致 ViewModel 發(fā)生變化,ViewModel 的數(shù)據(jù)變化也會自動實現(xiàn) View 的刷新,開發(fā)者可以不用直接處理View和數(shù)據(jù)的更新操作,MVVM 框架會完成這一切,MVVM 模式不同層之間關系如圖:

圖 ? 1

? ? 在Google I/O 2015 大會上,Android 開發(fā)團隊發(fā)布了官方的 MVVM 模式支持函數(shù)庫 Data Binding Library。Data Binding Library 是一個兼容函數(shù)庫,可以在 Android 2.1(API Level 7)及之后的版本大于 1.5.0-alphal,而且 Android Studio 的版本號應該大于或等于 1.3。

2、Data Binding 函數(shù)庫的引入

? ? 在 Android module 的 build.gradle 文件中加入下面配置即可,Android Studio 會為我們下載所需的依賴庫。

圖 2


3、Data Binding 表達式

? ? Data Binding 的布局和普通的布局文件不同,它以<layout>作為根布局標簽,里面包含 data 和 view 兩個標簽,其中 data 標簽用來實現(xiàn)數(shù)據(jù)綁定,view 標簽 就是在沒有使用 Data Binding 時這個頁面的布局文件的根標簽,語句如下。

圖 ?3

? ? data 標簽定義了一個名為 user 的屬性變量,類型是名為 User 的 Java 類,在 layout 中使用 @{user.lastName} 來將某個控件的值和 user 的成員變量 綁定在一起。

4、數(shù)據(jù)對象

? ?上面代碼中的 user 變量 成為數(shù)據(jù)對象,它可以是如下所示的 POJO 類。

圖 4

?也可以是如下的 JavaBeans 對象。

圖 ?5

? 對于 Data Binding 而言,上面這兩種類的定義是等價的,@{user.firstName} 表達式既可以訪問到公有的 firstName 屬性,也可以通過 getFirstName() 訪問到私有的 firstName 屬性。當然,如果存在名為 firstName() 的方法也是可以訪問到的。

5、數(shù)據(jù)綁定

? ? ?默認情況下,將根據(jù)布局文件的名稱生成一個Binding類,將其轉換為Pascal大小寫,并在其后面加上“Binding”。 上面的布局文件是main_activity.xml,所以生成類是MainActivityBinding。 這個類保存從布局屬性(例如用戶變量)到布局視圖的所有綁定,并知道如何為綁定表達式分配值。數(shù)據(jù)綁定的方法很簡單,代碼如下:


圖 ?6

暫且就先寫到這里吧!第一次用 MVVM 框架寫Demo還是很有趣的,簡化了很多代碼,用起來方便快捷。本文寫的有不對的地方還望各位大神指出,共同學習,共同進步。

Demo 地址:MVVM

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容