美文网首页mvvm教程
MVVM 教程(二)

MVVM 教程(二)

作者: 进击的杰爷 | 来源:发表于2018-08-21 16:02 被阅读63次

本文主要是在上文的基础上增加事件绑定。

具体的功能表现如图,输入文本并点击显示按钮后,屏幕中间区域显示输入的文本内容。

图1

首先,修改 MainVM,新增 textContent 属性,该属性与 TextView 的 android:text 绑定。而原先的 content 属性保持不变,依然是与 EditText 的 android:text 绑定。

图2

MVVM 某种意义上是基于数据驱动的。从这个角度出发。下图的代码就是这个功能实现的重点。

图3

我们只需将show方法与按钮做事件绑定就完事了。而该方法是定义在 MainVM 里还是其他类里都是没问题的,主要看个人理解。对于小编来说,更希望是保持 VM 类的单一性,即仅仅是与数据相关。所以新建 MainPresenter 类。( MVP 的 P)

图4

有了 MainVM, MainPresenter。 接下来就是修改 xml 文件。将 按钮的事件绑定到 MainPresenter.show()方法。

图5

1,声明 presenter 为 MainPresenter 类型。

2,绑定按钮事件。

图6

重点在于 ()->presenter.show(vm),假如show方法需要 view 对象的话,则可修改为 (view)->presenter.show(view, vm)。

最后,通过 binding类对presenter 赋值。运行,一切正常。收工。该例子代码:mvvm

相关文章

网友评论

  • mrzhqiang:当然,你可能不喜欢无法直接跳转的 vm::show ,那就将 show 作为 MainVM 的一个字段,比如 View.OnClickListener showEvent = new ...{}。——回复纯手打,别介意
  • mrzhqiang:啊?说好的 MVVM 怎么出现了 MainPresenter?MainVM 对你不好吗?为什么要抛弃它?在 MainVM 增加 public void show(View v) {} 方法,然后在布局中的点击属性进行绑定: onclick="@{vm::show}",实现 show 方法为 MainPresenter 中的逻辑。完美减少了一个多余的代理类。

本文标题:MVVM 教程(二)

本文链接:https://www.haomeiwen.com/subject/xohzbftx.html