美文网首页Android技术知识Android开发
关于MVVM中的ViewModule的一些理解

关于MVVM中的ViewModule的一些理解

作者: 追风骚年 | 来源:发表于2016-12-19 23:31 被阅读98次

    上个星期感觉好充实,星期三去参加了Google Developer Day,
    第一次见到谷歌的官方人员,第一次见到大牛徐宜生,
    这么多人都听谷歌在吹水,展示了Google VR,
    上午听了一场介绍了Android N的一些新特性,
    那个老师还挺搞幽默的,下午去听了一场Material Design的讲座,
    没想到是个美女,做技术的有这么好看,真是没想到,
    然后听了一场Tensorflow,那叫一个爆满,因为过于火热
    ,后来加了两场这个,不过我好像没怎么听懂(不用鄙视我 v)。
    后来去听了防止安卓的ANR,以及省电那啥,说了好多解决方案,
    以后找PPT,慢慢翻吧。再说星期天,
    去参加了GDG组织的一个Android框架的一个沙龙,
    见到了大牛翟一帆,魔都三帅之首我服。

    好了,扯淡再多就越离题千里,
    记得星期天的沙龙上,有个同学问ViewModule可不可以含有Context,MarkZhai当时说可以啊,用的舒服就好,
    其实我最初写MVVM的时候,VM中确实不含有一个android.*下的包,
    当然也不包括Context了,但是你在用的时候会感觉各种不便,
    因为安卓的上面的很多资源都是需要Context的,
    各种拿不到String,各种启动不了另外一个Activity,
    我前期的做法,是通过一个接口,去View中去实现启动Activity,
    通过一个接口去获取字符串,是的,可以实现,但是后期维护起来,
    你就会发现,一个VM就是一个VM,说好的VM可以复用的呢,
    假使存在复用,V中需要实现VM中需要的接口,
    多个V中充斥着相同的代码,用MarkZhai说的就是一坨,
    代码是写给机器看的那是程序员,代码写给程序员看的那叫工程师,
    所以后来VM中包含了一个Context,会觉得怎么用怎么爽,
    譬如一个列表界面到详情界面,这个列表中的数据在多个界面是相同的,样式是类似的,跳转到相同的详情,完全可以整理出来一个VM,
    VM中加上Context,VM中配置好,直接启动到详情,怎么用怎么爽,
    后期维护起来也只要看一个地方,还有就是VM我前期喜欢用Observablefield 去做和View的绑定,其实越用到后来,
    越是觉得用继承BaseObservable,然后加上注解,
    每当更新的时候notify一下,因为更多时候,
    Observablefield中的数据我们是不能直接拿来使用的,譬如一个json

    {
          "user":{
          "name":"android",
          "age":20,
          "tag":{
          "hobby":["soccer","running"],
          "color":["red","blue"]}},
          "cartInfo":[{"sku":"123","quantity",10},{"sku":"124","quantity",12}]
    }
    

    json我意想的,应该没有错误,这个还叫简单的,
    我们公司的json比这个还复杂,如果这个时候要取Color的个数,
    我们存的时候肯定存了Json所对应的Model假如叫data,
    那么这个时候就是各种 . 了,data.user.tag.color.size(),
    哈哈!!!这样的代码如果出现在XML里面,不仅没有简化逻辑,
    反而增加了阅读XML时候的困难,喜欢Databinding就是喜欢那种在XML里面能够一目了然这个View到底是干啥,
    如果XML中充斥着这样的代码,我想谁也不愿意看到,
    所以回到上面VM继承BaseObservable,你会有意向不到的收获,
    写一个函数getColorSize(),然后神奇的就可以在XML中就可以使用colorSize这个属性了,更新的时候记得notify就行,
    我现在是两种方案并行,以第二种方案为主,因为可以自己控制
    ,感觉要舒服的多。

    泡个脚早点睡觉,最近感冒,香菇蓝瘦啊!

    相关文章

      网友评论

        本文标题:关于MVVM中的ViewModule的一些理解

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