本文主要是在上文的基礎(chǔ)上增加事件綁定。
具體的功能表現(xiàn)如圖,輸入文本并點(diǎn)擊顯示按鈕后缤苫,屏幕中間區(qū)域顯示輸入的文本內(nèi)容。
首先狂芋,修改 MainVM榨馁,新增 textContent 屬性,該屬性與 TextView 的 android:text 綁定帜矾。而原先的 content 屬性保持不變翼虫,依然是與 EditText 的 android:text 綁定。
MVVM 某種意義上是基于數(shù)據(jù)驅(qū)動(dòng)的屡萤。從這個(gè)角度出發(fā)珍剑。下圖的代碼就是這個(gè)功能實(shí)現(xiàn)的重點(diǎn)。
我們只需將show方法與按鈕做事件綁定就完事了死陆。而該方法是定義在 MainVM 里還是其他類(lèi)里都是沒(méi)問(wèn)題的招拙,主要看個(gè)人理解。對(duì)于小編來(lái)說(shuō)措译,更希望是保持 VM 類(lèi)的單一性别凤,即僅僅是與數(shù)據(jù)相關(guān)。所以新建 MainPresenter 類(lèi)领虹。( MVP 的 P)
有了 MainVM, MainPresenter规哪。 接下來(lái)就是修改 xml 文件。將 按鈕的事件綁定到 MainPresenter.show()方法塌衰。
1诉稍,聲明 presenter 為 MainPresenter 類(lèi)型。
2最疆,綁定按鈕事件杯巨。
重點(diǎn)在于 ()->presenter.show(vm),假如show方法需要 view 對(duì)象的話(huà)努酸,則可修改為 (view)->presenter.show(view, vm)服爷。
最后,通過(guò) binding類(lèi)對(duì)presenter 賦值。運(yùn)行层扶,一切正常箫章。收工。該例子代碼:mvvm