Android基礎——架構模式MVVM之DataBinding的實踐

來源:互聯網
上載者:User

標籤:tar   方法參數   點擊   格式   roi   設計   使用者   產生   control   

 

本篇文章包含以下內容:

  • MVVM的介紹
  • MVVM的實踐
    • DataBinding之layout標籤的使用
    • DataBinding之data與variable標籤的使用
    • DataBinding之綁定點擊事件的使用

MVVM是Model-View-ViewModel的簡寫,這個模式提供對View和View Model的雙向資料繫結,使得View Model的狀態改變可以自動傳遞給View

  • Model:資料層,負責處理資料的載入或者儲存
  • View:視圖層,負責介面資料的展示,與使用者進行互動
  • ViewModel:負責完成View於Model間的互動,負責商務邏輯

MVVM的模型關係圖:

MVVM優點:

  • 低耦合。視圖(View)可以獨立於Model變化和修改,一個ViewModel可以綁定到不同的”View”上,當View變化的時候Model可以不變,當Model變化的時候View也可以不變。
  • 可重用性。你可以把一些視圖邏輯放在一個ViewModel裡面,讓很多view重用這段視圖邏輯。
  • 獨立開發。開發人員可以專註於商務邏輯和資料的開發(ViewModel),設計人員可以專註於頁面設計,使用Expression Blend可以很容易設計介面並產生xml代碼。
  • 可測試。介面素來是比較難於測試的,而現在測試可以針對ViewModel來寫。

在安卓採用DataBinding來支援MVVM架構模式,下面我們以DataBinding來實踐

實踐工具:Android Studio 2.1

準備工作:開啟安卓中的DataBinding,需要在Module下的build.gradle中聲明

  • layout標籤作用:作為DataBinding的標誌,省去findViewById()方法

第一步:我們以學生管理資訊為例子,我們在布局檔案的外層嵌套一層layout標籤,並附上命名空間,在EditText和TextView中添加對應的ID

第二步:在我們的主Activity中,需要通過DataBindingUtil來綁定我們的xml布局

DataBindingUtil.setContentView()方法返回一個資料繫結對象,其命名規則由系統自動產生,由於我們的布局名字是activity_login.xml,所以建置規則:將底線去掉,提取xml命名(字母首大寫)+Binding

第三步:如果我們需要操作xml的View,則不需要findViewById(),直接調用binding對象裡面的View即可,其控制項的命名規則:將底線去掉,提取xml命名(字母首大寫)

  • data與variable標籤的作用:將對象傳進布局xml檔案

第一步:由於layout標籤還需要在binding對象中使用View,還沒有完全體現MVVM的真正效果,下面在布局檔案聲明data與variable標籤

在variable中,我們取個name,並將它的type指向一個Bean對象,即綁定了該對象,在使用時,通過@{ }的格式,將對象的屬性綁定到控制項中

第二步:在主Activity中,只要設定這個對象即可

  • 綁定onTextChanged事件:我們通過EditText的修改來更新TextView
  • 綁定onClick事件:點擊TextView彈出Toast

第一步:我們在主Activity中建立一個Controller類,kite注意這個onTextChange方法的名字和參數必須和EditText原生的onTextChange一致,還有onClick方法也是

第二步:在布局檔案中,聲明這個類,並給EditText加上onTextChanged事件,給TextView加上onClick事件

注意controller.onTextChanged和controller.onClick必須對應Controller裡面的名字,Controller裡面的方法名可以隨便取,但是參數必須和原生的方法參數一致,否則編譯報錯

第三步:在主Activity中設定這個Controller

  • 綁定onClickListener事件:將xml的對象傳遞給Activity,這也是MVVM雙向資料繫結的體現

第一步:我們繼續在主Activity中Controller類,建立該方法

第二步:我們在TextView中使用該方法,並將student對象傳遞到Activity中

這裡用到的我們Lambda運算式,理解起來比較困難,大家知道就好了

源碼

github:https://github.com/AndroidHensen/Design-Mode

Android基礎——架構模式MVVM之DataBinding的實踐

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.