首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MVVM设计模式在Android编程中的应用

MVVM设计模式在Android编程中的应用

大家好,这一期呢,我们来看一下mvvm的设计模式。

Mvvm的意思是model, view, viewmodel。

Model. 这一部分控制的是应用的数据部分,它不能够直接的跟视图进行交互。通常的说,会把自己的数据接口暴露给view model, 下文中的例子中涉及到的数据有用户名,密码,是否点击按钮等等。

View. 这一部分主要是应用中的可视部分,它来观察viewmodel的上的变化。

View model. 它是model和view的桥梁。

它跟mvp相比,有哪些特点呢?

view model这一层替换掉了presenter这个中间层。

Presenter会有一个view的引用,但是viewmodel没有。

Presenter通过传统的方式,用激活事件的方法来更新视图。

view model会发送数据流。

Presenter和view是1对1的关系。

而view和view model是一对多的关系。

view model不知道view在聆听。

在安卓编程中有两种方式实现mvvm。

一种是data binding即数据绑定。

另一种是RxJava。

这个例子中我们还会沿用前面用的那个程序需求, 就是登录以后,显示一个消息。在这其中,我们来展示view model在没有view引用的情况下,如何做到这一步的。

这里有个问题,有没有可能在没有引用的情况下通知某些类呢?

有,在安卓中有三种方式: 双向数据绑定, 实时动态数据,使用Rx Java。

我们来看一下,双向数据绑定是怎么做到的。双向数据绑定的意思是说,在视图中发生的任何改变会传递到数据模型当中,同样的,数据模型的任何改变也会反映到视图上面。

在我们的例子中view model跟view之间的关联就是双向的。

我们需要binding adapter和xml定制的属性。

首先,要在build.gradle文件中添加如下设置:

然后是定义ViewModel:

在XML中绑定View和ViewModel:

View中使用DataBinding,定义BindAdapters:

在上面例子中,由于需要显示用户名和密码输入错误,所以在按钮点击触发中处理比较合适。并没有聆听用户名和密码的输入。

假设在未来有一个文本框,文本框的数据需要动态更新的话,就可以使用另一个BindAdapter聆听数据改变,然后显示在视图当中。

MVVM的好处是双向的数据绑定,不需要传送View给ViewModel。

不好的地方是流程的熟悉需要较长的过程,并不容易上手。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190918A0A47Q00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券