Google DataBinding 框架学习资料

入门指南
比较全面的入门demo

其他资料
https://realm.io/cn/news/data-binding-android-boyar-mount/

http://gold.xitu.io/post/578b944a128fe10063ad6c05

优点

1. xml中的表达式会自动判空,也就是表达式本身不会抛null point异常;
2. 自动找公开成员变量或者get方法。
  • xml中的表达式 contact.address 首先会尝试直接获取获取,即contact.address。如果成员变量address被申明为private的,就会尝试调用contact.getAddress()方法。
  • <android.support.v4.widget.DrawerLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:scrimColor="@{@color/scrimColor}"/>

    如上,DrawerLayout元素没有android:scrimColor 这样的写法,但通过app命名空间,数据绑定就会去找DrawerLayout.setScrimColor()方法,非常方便
3. 支持list map
4. 性能好,无反射。

传统的findview方法耗时,并且每次findView都需要遍历view hierarchy。但DataBinding会先遍历一次,把各个view存储下来,查找view的时候直接取就行了,不需要遍历。

5. 解耦

通过

@BindingAdapter({"bind:imageUrl", "bind:error"})
public static void loadImage(ImageView view, String url, Drawable error) {
   Picasso.with(view.getContext()).load(url).error(error).into(view);
}

按照定义好的图片加载方法,在xml中直接使用

app:error="@{@drawable/error}"
app:imageUrl="@{imageUrl}"

这样通过定义图片加载接口loadImage实现了解耦,如果要改图片加载方案,只需要改此接口。

缺点

因为是比较新的框架,后期API改动可能性大,并且框架本身仍在完善中,比如会有bug,对一些复杂情况(RecyvleView的不常用回调,自定义View等)可能没有很成熟的支持,也不支持AdapterView对DataSource的动态绑定。针对这些复杂情况,可以在xml中给view定义id,这样就能通过binding对象获取view, 就可以按照传统的方式处理了。
而AdapterView的DataSource动态绑定问题,可以使用开源框架解决,或者使用BindingAdapter注解,相信后续框架会更方便的支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值