環(huán)境
AndroidStudio 2.1
MVVM模式
MVVM模式:View,ViewModel盹靴,Model,三者關(guān)系如上圖。
Android 的MVVM模式:View 在 大多情況下是指 Activity,也因?yàn)楹芏嗖僮餍枰玫紺ontext柬脸,Activity也充當(dāng) Controller 的角色,很多人喜歡把邏輯寫在Activity中也是這個(gè)原因垦巴。在我眼里秦爆,MVVM模式解讀應(yīng)該是 Activity是View和分發(fā)器,邏輯處理等寫在ViewModel 中需要分發(fā)的時(shí)候回調(diào)給Activity分發(fā)望门,而數(shù)據(jù)則是Model提供,大多數(shù)情況下Model是數(shù)據(jù)固定后不用改變的纫事。這才是真正的MVVM模式。
Databinding的出現(xiàn)使得上面的假設(shè)成立钾唬,初試Databinding發(fā)現(xiàn)大大簡(jiǎn)便了開發(fā),加上現(xiàn)在支持雙向綁定儒士,實(shí)在是太棒了。
超高速搭建MVVM模式的庫(kù)
目前MVVM模式的項(xiàng)目還不多,大多都是MVC薯鳍,MVP模式崩溪,對(duì)于Android 的MVVM模式的架構(gòu)應(yīng)該怎么搭建,怎么使用抵怎,這方面完整的知識(shí)并不多見。在此拋磚引玉姿染,提出一個(gè)方案。
Databinding可以跳過(guò)Activity的findViewById直接和xml中控件進(jìn)行雙向綁定闽颇,對(duì)于數(shù)據(jù)顯示帶來(lái)了大大的便利。我們大多數(shù)項(xiàng)目中列表占了很重要的一環(huán),其中列表數(shù)據(jù)綁定怠褐、刷新、加載更多、點(diǎn)擊響應(yīng)揖铜、狀態(tài)顯示都是常用而且可以封裝起來(lái)的贿肩。
而對(duì)于網(wǎng)絡(luò)庫(kù),我使用了Retrofit ,返回同一了JSON格式:{"status":0,"msg":"提示消息","content":{}} 茂嗓,其中 content 里面數(shù)據(jù)如果是列表則是 JSONArray,非列表則是JSONObject蝌矛。
兩者相配合,實(shí)現(xiàn)了快速?gòu)木W(wǎng)絡(luò)獲取數(shù)據(jù)并顯示:
只需兩句話就能完成 加載網(wǎng)絡(luò)數(shù)據(jù)后綁定數(shù)據(jù)并顯示
public Call<HttpResult<List<Model>>> onLoadListHttpRequest();
public void setItemLayout(int itemLayout)氮唯;
Github
這個(gè)庫(kù)的使用,demo 中已經(jīng)給出了各種情況使用的例子了,請(qǐng)到MVVMFramework
參考
QQ群:Data Binding 交流群(324112728)