美文网首页
聊一聊Databinding

聊一聊Databinding

作者: 哎一不小心就 | 来源:发表于2019-01-08 15:39 被阅读0次

    是什么?

            Databinding是谷歌的官方框架,可以用最少的代码将视图与数据绑定。

            为什么用?

             最初我们都是findViewById()去找到控件的引用,后来我们用ButterKnife去进行依赖注入,现在我们有了Databinding可以用最少的代码将视图与数据进行绑定,还可以实现双向绑定。

    怎么用?

            一、基本使用

    步骤一:在app下的build.gradle下配置Databinding

    配置Databinding

            1.通过DataBinding的api绑定layouts,默认返回的是基类,绑定的方式有多个,例如inflate(),setContentView(),用哪个取决你自己。

            通过DataBinding获取布局转为对应的子类时,命名方式为.inflate()的布局名称去掉下划线然后加上Binding。

            至此你可以直接通过bind获取控件的引用执行你想要的操作了。

            这个是我在xml写的一个EditText控件,直接通过bind去获取引用。

    二、在xml中进行数据和视图的绑定。

             步骤一:在xml中以layout为跟标签,然后通过data标签指定要绑定的javabean。

    步骤二:直接去应用javabean里面的字段

            在这里只能获取javabean最初的数据,但是如果数据变了,那我们的View怎样更新呢?

             方式一:javabean去继承BaseObservable然后在get方法上加上@Bindable,在set方法中加上notiPropertyChanged()去通知DataBinding去更新ui。但是这种方法有个弊端,就是有很多字段变了,那么每个字段都要加上,不太方便。

            方式二:通过DataBinding对xml导入的javabean进行重新赋值。

    这个setXXX()方法是DataBinding帮我们生成的,这样就解决了上面方式一的问题。

            方式三:将javabean中的字段改为ObservableFied,Databinding提供的类有ObservableField,ObservableBoolean,ObservableByte,ObservableChar,ObservableShort,ObservableInt,ObservableLong,ObservableFloat,ObservableDouble,ObservableParcelable等。

             方式四:不使用javabean,使用ObservableArrayList和ObservableArrayMap,使用起来和ArrayList和HashMap一样,这里不多做概述。

            三、事件绑定

             1.引用OnClickListener的方式。

    2.引用处理类或者处理接口。(下面是导入了一个接口)

    四、自定义属性

            这里我把TextView的从第2个字符开始的颜色弄成红色,自定义了一个change字段。

             在xml中调用

    注意点:自定义属性的方法要用static修饰,否则报错

    五、在列表中使用也是一样的

    好啦,你可以去在项目中使用啦!!!

    相关文章

      网友评论

          本文标题:聊一聊Databinding

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