Android中的MVVM架構(gòu)設(shè)計(jì)-實(shí)用篇(二)

速度與激情7.jpg

引言

拖的時(shí)間夠久的了,趕緊來(lái)還債了...

by the way...
今天由于一些私人的關(guān)系,去了趟「大望路」的「小米體驗(yàn)店」里去體驗(yàn)了一下,看到了剛剛發(fā)布的的「小米8」,還有「小米8SE」,但是對(duì)我的感覺沖擊不是很大,不過(guò) 這兩部手機(jī)的速度肯定是沒得說(shuō)的,性價(jià)比也很不錯(cuò),只是沒有讓我很想買的沖動(dòng),所以現(xiàn)在有想換設(shè)備的同學(xué),可以抽空去體驗(yàn)一下再做決定,而手中的設(shè)備還夠用,就不要著急換了,等更好的出來(lái)吧~~

(不喜勿噴哦,決定權(quán)在于你哦)

接著上一篇的mvvm的介紹,今天給大家講解下
「如何只設(shè)置一次數(shù)據(jù),再當(dāng)數(shù)據(jù)發(fā)生變化時(shí),讓視圖直接自動(dòng)變化?」
好吧,這個(gè)命題很長(zhǎng),大家可以精簡(jiǎn)一下,大致意思就是如此。

請(qǐng)看正文

方法一、實(shí)現(xiàn)BaseObservable接口

即:讓我們操作的bean去繼承BaseObservable類,再去按照「特殊的規(guī)則」去編寫,即可實(shí)現(xiàn)。
ok,廢話不多說(shuō),直接上代碼


extends BaseObservable class.png

ok,看到上圖中的”紅框“ 和”藍(lán)框“了嗎,當(dāng)我們將User類繼承BaseObservable類后,其實(shí)不需要再重寫什么方法,只需要

1、給之前的get方法添加 "@Bindable"注解

2、給之前的set方法的最后邊添加"notifyPropertyChanged(BR.對(duì)應(yīng)的控件id)"

步驟一的作用就是通過(guò)注解的方式,來(lái)標(biāo)記此get屬性方法,將來(lái)是要自動(dòng)觸發(fā)的動(dòng)作
而步驟二的作用則是,當(dāng)數(shù)據(jù)發(fā)生變化時(shí),發(fā)出此屬性已經(jīng)改變的通知,從而讓dataBinding框架去自動(dòng)調(diào)用get方法

這里解釋下BR這個(gè)東西是什么鬼,BR類其實(shí)類似R文件,使我們啟用DataBinding框架之后,構(gòu)建項(xiàng)目自動(dòng)生成的類,我們可以在寫完之后點(diǎn)擊BR的目錄,就是下圖所示


BR目錄.png

看,不是是跟自動(dòng)生成的R文件很像?
ok,只要這樣,再配合代碼,就能達(dá)到

「只設(shè)置一次數(shù)據(jù),再當(dāng)數(shù)據(jù)發(fā)生變化時(shí),讓視圖直接自動(dòng)變化」

的效果了
我們看一下MainActivity代碼


繼承BaseObservable方式MainActivity代碼.png

繼承BaseObservable方法的布局.png

此布局其實(shí)結(jié)合了方法2的布局,我這里比較懶,沒刪,請(qǐng)自行將包含"login"的段落的忽略掉(懶成這樣真是沒救了。。。)

恩,好了,再結(jié)合上方粘貼的User類就能出結(jié)果了,我們來(lái)看一下


方法1.gif

恩 效果就出來(lái)了
我們來(lái)看下一種吧

方法二、定義ObserverField對(duì)象

這個(gè)方式用的人還是蠻多的,我就不繞彎子,直接貼代碼吧


方法2-類.png

這個(gè)方法最主要的變化就是,不再用我們以前用的變量類型去聲明變量了,而是通過(guò)「ObservableField」再集合之前的泛型,去聲明變量,當(dāng)然,還需要生成getter setter方法嘍

方法2MainActivity.png

MainAcitivity代碼基本上和方法1一致,但是請(qǐng)注意

ObservableField 設(shè)置內(nèi)容時(shí)需要使用set方法去設(shè)置了

    login.getPassword().set("是嗎,好帥哦~~");
方法2布局.png

ok,看看結(jié)果吧


方法2.gif

結(jié)語(yǔ)

本篇算是短文了,大家可以抽幾分鐘的時(shí)間去試驗(yàn)一下,接下來(lái)的文章,我將會(huì)把ImageView如何展示圖片,listview,recyclerview展示列表等一一展示,謝謝大家的支持??!

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容