美文网首页
Android Databinding

Android Databinding

作者: EasonDev | 来源:发表于2016-04-12 16:58 被阅读548次

    之前说每周至少一篇博客的这篇一下间隔了两个星期(--)这两个星期加班加的也是吐血啊。要说硬抽时间写个东西也是能行。但没什么特别有用的感觉还不如不写(现在写博客为粉丝功利的人太多...)

    回归正题,前两天google的android studio2.0终于出稳定版了,因为用自己的电脑办公所以一直没有用过。出了稳定版迫不及待的升了起来。之前一直火热的MVVM databinding可以爽爽的码起来了。先弄个截图毕竟这是“潜规则”没图谁知道干嘛的哈哈

    Screenshot_20160412-165135.png

    ok. Just do it.

    首先需要在build.gradle允许使用databinding(如图)

    <br /> Paste_Image.png

    数据绑定

    <br >在xml布局文件中将需要和view绑定的model引入 其中user为变量名 type为路径(第一个红框)。然后在需要更新的地方进行调用(第二个红框)。这样在xml中的绑定就完成了。

    <pre>
    <data> <variable name="user" type="com.cui.databinding.entity.User"/> </data>
    </pre>

    而且是可以写常用的表达式的比如

    Paste_Image.png
    Paste_Image.png

    通知view更新

    • 第一个红框:名字是根据xml文件自动生成的比如xml叫activity_main.xml那么就会是ActivityMainBinding
    • 第二个红框:之前的setContentView变为DataBindingUtil.setContentView(还有其他的解析布局的方法一眼就能看懂和之前没区别)databinding的出现不用再findviewById也不需要butterknife了可以直接根据id获取。
    • 第三个红框:这里就是通知view进行对应model内容更新的地方了。最主要的一句databinding.setUser(user);他会通知view进行更新。下面还有两个注释代码同样也可以通知view更新 根据文档setVariable()为设置变动的对象 executePendingBindings()将通知绑定的view 注意executependingBindings()需要在ui线程中

    这里要说一下就是之前看文档在model实体类中get和set方法需要写是对应的注解和通知这里我没有使用也是可以更新的。我也用了在model中写上而不写用上述方法通知是没法更新的。所以就暂时忽略吧(如果有大神知道还请纠正告知)

    Paste_Image.png Paste_Image.png Paste_Image.png

    adapter的写法

    Paste_Image.png

    最后说一句

    现在还是尝鲜就好。现在只支持单向绑定而且提示很少(可以忽略)不报错。我遇到编译时报错了。应该错在xml中的表达式(表达式也不会有那个红色的下划线),但却报在了java类中的方法。最后排查半天才知道(重点表达式还是跟着官方写的)所以坑还是会挺多的毕竟这才是第一版。
    代码地址 https://github.com/EasonHolmes/SampleDatabinding

    相关文章

      网友评论

          本文标题:Android Databinding

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