之前说每周至少一篇博客的这篇一下间隔了两个星期(--)这两个星期加班加的也是吐血啊。要说硬抽时间写个东西也是能行。但没什么特别有用的感觉还不如不写(现在写博客为粉丝功利的人太多...)
回归正题,前两天google的android studio2.0终于出稳定版了,因为用自己的电脑办公所以一直没有用过。出了稳定版迫不及待的升了起来。之前一直火热的MVVM databinding可以爽爽的码起来了。先弄个截图毕竟这是“潜规则”没图谁知道干嘛的哈哈
ok. Just do it.
首先需要在build.gradle允许使用databinding(如图)
<br />数据绑定
<br >在xml布局文件中将需要和view绑定的model引入 其中user为变量名 type为路径(第一个红框)。然后在需要更新的地方进行调用(第二个红框)。这样在xml中的绑定就完成了。
<pre>
<data> <variable name="user" type="com.cui.databinding.entity.User"/> </data>
</pre>
而且是可以写常用的表达式的比如
通知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中写上而不写用上述方法通知是没法更新的。所以就暂时忽略吧(如果有大神知道还请纠正告知)
adapter的写法
最后说一句
现在还是尝鲜就好。现在只支持单向绑定而且提示很少(可以忽略)不报错。我遇到编译时报错了。应该错在xml中的表达式(表达式也不会有那个红色的下划线),但却报在了java类中的方法。最后排查半天才知道(重点表达式还是跟着官方写的)所以坑还是会挺多的毕竟这才是第一版。
代码地址 https://github.com/EasonHolmes/SampleDatabinding