DataBinding绑定控件

作者: eiun | 来源:发表于2016-10-27 18:00 被阅读349次

虽然现在我是在做Android的开发,但是偶尔也会有学一点JS的知识,没办法现在JS混得比Android好多了,唉说起来就伤心。

JS里面呢有个东西特别好用,就是事件绑定,JS的控件不用频繁的去setText,都直接绑定数据的了,从网络上获取数据回来后自动显示在控件上了,不用你一个个找到控件的ID再慢慢去setText。

现在,哦不是现在,Google发布5.0的时候就出了个DataBinding的东西,大概也是干这样的事的,话说我也是才知道····

还不懂具体什么意思的话看例子

首先有个bean,用来解析JSON数据的bean就好

    private boolean sex;   //性别(别问为什么是boolean,后台给的)
    private String name;  //名字
    private String attentionStatus; //这个是类似微博那个是否关注的状态,数据是0或者1,不过我用了String类型,为了演示,不过也没错

比如里面有这三个参数

<?xml version="1.0" encoding="utf-8"?>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:bind="http://schemas.android.com/tools">
    <data>
        <variable
            name="bean"
            type="com.***.***.***.bean"/>
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        android:orientation="vertical"/>
        <TextView
            android:id="@+id/tv_person_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{bean.name}"  //这是神奇的事件绑定
/>
        <TextView
            android:id="@+id/tv_person_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{bean.sex? `男` : `女`}"//这也是神奇的事件绑定,还加了正则表达式
/>

        <CheckBox
            android:id="@+id/cb_concerned"
            android:layout_width="55dp"
            android:layout_height="30dp"
            android:checked="@{bean.attentionStatus.equals(`0`)? false : true }"//这个更加6
            android:text="@{bean.attentionStatus.equals(`0`)? `+关注`:`已关注`    }"//这个还是
            android:textColor="@color/white"
/>

</LinearLayout>
</layout>

记住

<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:bind="http://schemas.android.com/tools">
    <data>
        <variable
            name="bean"
            type="com.***.***.***.bean"/>
    </data>

这一串一定要放在开头,把控件包起来才行
***是你包名,会有提示的
name="bean"是名字,很神奇那里就用到了

然后正常来说联网获取数据回来了
然后用findbyid
或者一直都挺火的butterknife框架加个AS的butterknife zelezny这个插件可以自动注解控件(这两个搭配还是很方便的,建议没用过的都去找找,起码不用写findbyid了)

正常的流程就开始一个个数据setText进去了

可是xml加了那句绑定以后咧
首先初始化一下

Activiy***Binding binding= DataBindingUtil.setContentView(this, R.layout.activiy_***);

Activiy***Binding是你xml配置好了,你打Activiy它会自动出现的,是以你的Activiy名字命名的。

binding.setPatient(bean);//bean是后台获取数据解析后的结果

好了,就这一句话数据自动进去了

然后你的控件有写ID的嘛
你要找到这个控件也不用findbyid
直接binding.***就能找到了,例如:binding.cbConcerned就是那个checkbox
就像这样用
binding.cbConcerned.setOnClickListener(cbClick);

自带holder光环啊

这只是最基础的应用,更多功能就自行百度了,我只是抛个砖而已O(∩_∩)O~

说了辣么多好处其实还有不方便的地方我也说下吧
比如最不方便的就是用ID找控件的时候<include>里面的控件都找不出来,这点太坑了···

PS:今天要不要加班呢,晚上吃啥呢,这是个问题,哈哈~

相关文章

  • DataBinding补坑

    上个星期咧写了篇databinding的入门使用 [DataBinding绑定控件]http://www.jian...

  • DataBinding绑定控件

    虽然现在我是在做Android的开发,但是偶尔也会有学一点JS的知识,没办法现在JS混得比Android好多了,唉...

  • Jetpack-DataBinding

    DataBinding概述 DataBinding主要是将数据与UI控件的绑定,你无需手动调用视图来 set 新状...

  • MVVM

    DataBinding基础用法 DataBinding入门 Android数据绑定框架DataBinding,堪称...

  • dataBinding原理

    dataBinding如何绑定View? dataBinding如何修改View?

  • DataBinding 输入控件的双向绑定数据绑定实现

    熟悉DataBinding的小伙伴都知道,使用EditText控件是可以通过使用@={}实现双向数据绑定,但如果是...

  • DataBinding原理深入理解

    DataBinding的三种写法 我们使用DataBinding可以实现绑定字段和View的绑定,注意有单向绑定和...

  • 有关Databinding与MVVM的一些事

    DataBinding 说到DataBinding,大家就会想到双向绑定。那究竟什么是双向绑定,其实对于刚接触的人...

  • Data Binding基础用法

    1.DataBinding配置2.DataBinding的使用3.UI/事件绑定 1.DataBinding配置 ...

  • dataBinding

    DataBinding DataBinding DataBinding是谷歌发布的一种数据绑定的框架,能够省去fi...

网友评论

    本文标题:DataBinding绑定控件

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