


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】詳解Android的MVVM框架-數(shù)據(jù)綁定
?本教程是跟著DataBindingGuide學(xué)習(xí)過程中得出的一些實(shí)踐經(jīng)驗(yàn),同時(shí)修改了官方教程的一些錯(cuò)誤,每一個(gè)知識(shí)點(diǎn)都有對(duì)應(yīng)的源碼,爭(zhēng)取做到實(shí)踐與理論相結(jié)合。DataBinding解決了AndroidUI編程中的一個(gè)痛點(diǎn),官方原生支持MVVM模型可以讓我們?cè)诓桓淖兗扔写a框架的前提下,非常容易地使用這些新特性。其實(shí)在此之前,已經(jīng)有些第三方的框架可以支持MVVM模型,無耐由于框架的侵入性太強(qiáng),導(dǎo)致一直沒有流行起來。準(zhǔn)備AndroidStudio更新到1.3版本打開Preferences,找到Appearances&Behavior下的Updates選項(xiàng),把AutomaticallyCheckupdatesfor修改成CanaryChannel。
注意DataBinding是一個(gè)support包,因此與AndroidM沒什么關(guān)系,可以不用下載AndroidMNCPreview的SDK。新建一個(gè)Project修改Project的build.gradle,為buildscript添加一條依賴,Gradle版本為1.2.3。為用到DataBinding的模塊添加插件,修改對(duì)應(yīng)的build.gradle。注意如果Module用到的buildToolsVersion高于22.0.1,比如23rc1,那com.android.databinding:dataBinder的版本要改為1.3.0-beta1,否則會(huì)出現(xiàn)如下錯(cuò)誤:
基礎(chǔ)工程創(chuàng)建完成后,我們通過一個(gè)最簡(jiǎn)單的例子來說明DataBinding的基本用法。布局文件使用DataBinding之后,xml的布局文件就不再單純地展示UI元素,還需要定義UI元素用到的變量。所以,它的根節(jié)點(diǎn)不再是一個(gè)ViewGroup,而是變成了layout,并且新增了一個(gè)節(jié)點(diǎn)data。要實(shí)現(xiàn)MVVM的ViewModel就需要把數(shù)據(jù)與UI進(jìn)行綁定,data節(jié)點(diǎn)就為此提供了一個(gè)橋梁,我們先在data中聲明一個(gè)variable,這個(gè)變量會(huì)為UI元素提供數(shù)據(jù)(例如TextView的android:text),然后在Java代碼中把”后臺(tái)”數(shù)據(jù)與這個(gè)variable進(jìn)行綁定。如果要用一個(gè)表格來展示用戶的基本信息,用DataBinding應(yīng)該怎么實(shí)現(xiàn)呢?數(shù)據(jù)對(duì)象添加一個(gè)POJO類-User,非常簡(jiǎn)單,四個(gè)屬性以及他們的getter和setter。稍后,我們會(huì)新建一個(gè)User類型的變量,然后把它跟布局文件中聲明的變量進(jìn)行綁定。定義Variable再回到布局文件,在data節(jié)點(diǎn)中聲明一個(gè)變量user。其中type屬性就是我們?cè)贘ava文件中定義的User類。當(dāng)然,data節(jié)點(diǎn)也支持import,所以上面的代碼可以換一種形式來寫。然后我們剛才在build.gradle中添加的那個(gè)插件-com.android.databinding會(huì)根據(jù)xml文件的名稱Generate一個(gè)繼承自ViewDataBinding的類。例如,這里xml的文件名叫activity_basic.xml,那么生成的類就是ActivityBasicBinding。注意java.lang.*包中的類會(huì)被自動(dòng)導(dǎo)入,可以直接使用,例如要定義一個(gè)String類型的變量:綁定Variable修改BasicActivity的onCreate方法,用DatabindingUtil.setContentView()來替換掉setContentView(),然后創(chuàng)建一個(gè)user對(duì)象,通過binding.setUser(user)與variable進(jìn)行綁定。注意ActivityBasicBinding類是自動(dòng)生成的,所有的set方法也是根據(jù)variable名稱生成的。例如,我們定義了兩個(gè)變量。那么就會(huì)生成對(duì)應(yīng)的兩個(gè)set方法。使用Variable數(shù)據(jù)與Variable綁定之后,xml的UI元素就可以直接使用了。至此,一個(gè)簡(jiǎn)單的數(shù)據(jù)綁定就完成了,可參考完整代碼高級(jí)用法使用類方法首先為類添加一個(gè)靜態(tài)方法然后在xml的data節(jié)點(diǎn)中導(dǎo)入:使用方法與Java語法一樣:類型別名如果我們?cè)赿ata節(jié)點(diǎn)了導(dǎo)入了兩個(gè)同名的類怎么辦?這樣一來出現(xiàn)了兩個(gè)User類,那user變量要用哪一個(gè)呢?不用擔(dān)心,import還有一個(gè)alias屬性。NullCoalescing
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 申請(qǐng)班長(zhǎng)的申請(qǐng)書
- 公共營養(yǎng)師復(fù)習(xí)試題
- wps勞動(dòng)合同范本
- 營養(yǎng)配餐員復(fù)習(xí)測(cè)試題
- 工會(huì)預(yù)算管理辦法、基層工會(huì)預(yù)算管理辦法練習(xí)測(cè)試卷
- 廚房承包協(xié)議合同范本
- 商場(chǎng)門店合同范本
- 國際鐵路技術(shù)轉(zhuǎn)讓合同范本
- 制砂合同范本
- 團(tuán)體漢服租賃合同范本
- GB/T 6967-2009工程結(jié)構(gòu)用中、高強(qiáng)度不銹鋼鑄件
- 公司發(fā)文登記表模板
- 法考-01刑法-案例指導(dǎo)用書【】
- 《考古學(xué)》第二章-田野考古課件
- 膀胱鏡檢查記錄
- 檔案銷毀清冊(cè)
- 固體物理21固體的結(jié)合課件
- 水平定向鉆施工規(guī)范方案
- 細(xì)支氣管肺泡癌的影像診斷(61頁)
- 2022年東北大學(xué)現(xiàn)代控制理論試題及答案
- X射線的物理學(xué)基礎(chǔ)-
評(píng)論
0/150
提交評(píng)論