美文网首页
Google DataBinding 框架学习资料

Google DataBinding 框架学习资料

作者: hjm1fb | 来源:发表于2017-09-16 17:19 被阅读12次

    入门指南
    比较全面的入门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实现了解耦,如果要改图片加载方案,只需要改此接口。

    缺点

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

    相关文章

      网友评论

          本文标题:Google DataBinding 框架学习资料

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