聊一聊Databinding

是什么?

        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)