美文网首页
MVVM设计模式在Android编程中的应用

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

作者: 丁哥开讲 | 来源:发表于2019-09-15 15:12 被阅读0次

    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。

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

    保持联系,请点击关注。

    相关文章

      网友评论

          本文标题:MVVM设计模式在Android编程中的应用

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