Android Databinding(二)

2015年12月24日

[TOC]

1币狠、從MVP開始

MVP出現(xiàn)的前提就是減少了Activity的職責(zé)负懦,簡化了Activity中的代碼失暴,將復(fù)雜的邏輯代碼提取到了Presenter中進(jìn)行處理酪我。與之對應(yīng)的好處就是,耦合度更低讹剔,更方便的進(jìn)行單元測試。


MVP
MVP

1. 各部分之間的通信详民,都是雙向的延欠。
2. View 與 Model 不發(fā)生聯(lián)系,都通過 Presenter 傳遞沈跨。
3. View 非常薄由捎,不部署任何業(yè)務(wù)邏輯,稱為"被動視圖"(Passive View)谒出,即沒有任何主動性隅俘,而 Presenter非常厚,所有邏輯都部署在那里笤喳。

2为居、MVVM

說MVVM首先先提到標(biāo)記語言,隨著20世紀(jì)初web的崛起杀狡,HTML跟JS這樣標(biāo)記語言+程序語言的組合模式開始變得令人注目蒙畴。逐漸推出的Flex、Sliverlight呜象、QT膳凝、WPF、JSF恭陡、Cocoa等UI系統(tǒng)不約而同地選擇了標(biāo)記語言來描述界面蹬音。
在這樣的架構(gòu)中,view(或者說叫控件休玩,不但是從依賴關(guān)系上跟程序的其他部件解耦著淆,而且從語言上跟其它部分隔離開來)
然而這樣的系統(tǒng)架構(gòu)中劫狠,MVC和MVP模式已經(jīng)不能很好地適用了。微軟架構(gòu)師John Gossman在WPF的XAML模式推出的同時永部,提出了MVVM的概念独泞。


MVP
MVP

在安卓開發(fā)中,layout文件是靜態(tài)的苔埋,只能通過代碼進(jìn)行修改懦砂,大量的事件綁定和finViewById以及視圖的邏輯充斥在Activity中,使Acticity顯得特別胖组橄。

MVP雖然在一定程度上解決了Acticity代碼量龐大荞膘,實(shí)現(xiàn)視圖邏輯和視圖操作的解耦,但是他們還是需要大量的代碼對layout進(jìn)行設(shè)置屬性玉工,比如說ImageView的setImageBitmap或者TextView的setText衫画,顯得特別啰嗦也很容易出錯

但是而在安卓的Databinding中,把一個layout里面的控件的某些屬性綁定對應(yīng)的bean瓮栗,把操作的控件看成bean對象削罩,只需要對layout綁定的bean進(jìn)行修改之后,layout就會隨之改變费奸。

這里的bean就是MVVM中的Model弥激,那么對bean進(jìn)行邏輯處理的就是VM(ViewModel),這樣我們主需要關(guān)心M和VM之間的交互了愿阐。但是微服,還不能是實(shí)現(xiàn)雙向綁定,比如說缨历,對一個EditText的text屬性綁定一個bean的屬性,那么對EditText修改之后他的bean不會隨之變化以蕴,當(dāng)然可以自定義屬性解決這個問題。

下面就是layout

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <!-- 配置變量辛孵,name字段為下面想要引用的類丛肮,type為全類名,
    AS中快捷鍵ctrl+shift+alt+c -->
    <data>
        <import type="com.znke.hellodatabinding.test1.Person"/>
        <variable
            name="person"
            type="Person"/>
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <!-- 需要填充的字段用@{}表示 -->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="25sp"
            android:text="@{person.name}"
            />
    </LinearLayout>
</layout>

一個布局文件就是一個ViewBinding對象魄缚,它包含了這個布局里面所有View和變量:

ActivityRecyclerviewBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_recyclerview);

注意宝与,ActivityRecyclerviewBinding是系統(tǒng)自動生成的

然后看一下MVVM的示意圖

MVVM
MVVM

MVVM是MVP的升級版,只是把presenter變成了ViewModel冶匹,并且MVVM支持綁定习劫。

Demo地址

參考博文

MVC,MVP 和 MVVM 的圖示
談?wù)刄I架構(gòu)設(shè)計的演化

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嚼隘,一起剝皮案震驚了整個濱河市诽里,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌飞蛹,老刑警劉巖谤狡,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匿乃,死亡現(xiàn)場離奇詭異,居然都是意外死亡豌汇,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門泄隔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拒贱,“玉大人,你說我怎么就攤上這事佛嬉÷甙模” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵暖呕,是天一觀的道長斜做。 經(jīng)常有香客問我,道長湾揽,這世上最難降的妖魔是什么瓤逼? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮库物,結(jié)果婚禮上霸旗,老公的妹妹穿的比我還像新娘。我一直安慰自己戚揭,他們只是感情好诱告,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著民晒,像睡著了一般精居。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上潜必,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天靴姿,我揣著相機(jī)與錄音,去河邊找鬼磁滚。 笑死空猜,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的恨旱。 我是一名探鬼主播辈毯,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼搜贤!你這毒婦竟也來了谆沃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤仪芒,失蹤者是張志新(化名)和其女友劉穎唁影,沒想到半個月后耕陷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡据沈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年哟沫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锌介。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡嗜诀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出孔祸,到底是詐尸還是另有隱情隆敢,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布崔慧,位于F島的核電站拂蝎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏惶室。R本人自食惡果不足惜温自,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望皇钞。 院中可真熱鬧捣作,春花似錦、人聲如沸鹅士。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掉盅。三九已至也拜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間趾痘,已是汗流浹背慢哈。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留永票,地道東北人卵贱。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像侣集,于是被迫代替她去往敵國和親键俱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容