MVVM 教程(二)
2018-08-21 本文已影响63人
进击的杰爷
本文主要是在上文的基础上增加事件绑定。
具体的功能表现如图,输入文本并点击显示按钮后,屏幕中间区域显示输入的文本内容。
![](https://img.haomeiwen.com/i4424609/8c5dfb680e4f626a.png)
首先,修改 MainVM,新增 textContent 属性,该属性与 TextView 的 android:text 绑定。而原先的 content 属性保持不变,依然是与 EditText 的 android:text 绑定。
![](https://img.haomeiwen.com/i4424609/87a49790165ac122.png)
MVVM 某种意义上是基于数据驱动的。从这个角度出发。下图的代码就是这个功能实现的重点。
![](https://img.haomeiwen.com/i4424609/f0715ae4bab6558b.png)
我们只需将show方法与按钮做事件绑定就完事了。而该方法是定义在 MainVM 里还是其他类里都是没问题的,主要看个人理解。对于小编来说,更希望是保持 VM 类的单一性,即仅仅是与数据相关。所以新建 MainPresenter 类。( MVP 的 P)
![](https://img.haomeiwen.com/i4424609/67995eee80d3a84d.png)
有了 MainVM, MainPresenter。 接下来就是修改 xml 文件。将 按钮的事件绑定到 MainPresenter.show()方法。
![](https://img.haomeiwen.com/i4424609/db0e270910b7e632.png)
1,声明 presenter 为 MainPresenter 类型。
2,绑定按钮事件。
![](https://img.haomeiwen.com/i4424609/e48b0396553a96e9.png)
重点在于 ()->presenter.show(vm),假如show方法需要 view 对象的话,则可修改为 (view)->presenter.show(view, vm)。
最后,通过 binding类对presenter 赋值。运行,一切正常。收工。该例子代码:mvvm
![](https://img.haomeiwen.com/i4424609/561941bccfb26fcf.png)