現(xiàn)在MVVM ?設(shè)計(jì)模式在前端相當(dāng)火爆抒寂,流行框架都以 MVVM 模式基礎(chǔ)進(jìn)行設(shè)計(jì)的碧注。他的好處完全解開(kāi) model 和 view 間的耦合巷懈。那么在 android 端别瞭,其實(shí) android 也是前端懂算。我們通常開(kāi)發(fā)流程只冻,對(duì) UI 操作也類(lèi)似,我們創(chuàng)建 UI 給他一個(gè) id计技,然后在寫(xiě)業(yè)務(wù)時(shí)通過(guò) id 獲取對(duì)應(yīng)UI 組件喜德,最后對(duì)對(duì)這個(gè)組件進(jìn)行的屬性進(jìn)行修改來(lái)達(dá)到與用戶(hù)交互。
那么好垮媒,看看下圖我們就是我們?nèi)绾胃陆缑?/p>
雖然butterknife 這樣的庫(kù)可以通過(guò)注解的方式讓我們可以省去一些中間過(guò)程舍悯,但是他不是解決問(wèn)題根本。
但是在 2015 的 google 開(kāi)發(fā)者大會(huì)上睡雇,google 給我們帶來(lái)一條振奮人心的好消息那就是 android 也支持?jǐn)?shù)據(jù)綁定了萌衬,代碼優(yōu)雅
那么我們?cè)鯓訉?shí)現(xiàn)數(shù)據(jù)綁定呢
我們首先要修改 build.gradle(app), gradle 原生就對(duì) data binding 支持,無(wú)需添加其他的庫(kù)
看到了吧 enabled = true 就這么簡(jiǎn)單
然后我們修改 layout.xml 以便讓他支持?jǐn)?shù)據(jù)綁定
看到了吧它抱,我們對(duì)原有LinearLayout標(biāo)簽再套一層 layout 標(biāo)簽秕豫,然后定義變量 vriable 中的 data 標(biāo)簽定義用于與視圖綁定的類(lèi) User 以及在綁定使用的名稱(chēng) user 具體在標(biāo)簽中使用時(shí)形式為 @{user.username}
在看一看我們的 User 類(lèi)是什么樣子。
User 繼承了 BaseObservable ,然后用注解對(duì)字段進(jìn)行綁定观蓄。
回頭再看一看 Activity 中怎么處理馁蒂,重點(diǎn)說(shuō)明一下,這里 ActivityDataBindBinding 是系統(tǒng)幫助我們自動(dòng)生成的蜘腌。名字DataBindActivity 而來(lái)沫屡,他們之間規(guī)律自己總結(jié)吧。Api 很人性化撮珠,自己看的沮脖。