是什么?
Databinding是谷歌的官方框架,可以用最少的代码将视图与数据绑定。
为什么用?
最初我们都是findViewById()去找到控件的引用,后来我们用ButterKnife去进行依赖注入,现在我们有了Databinding可以用最少的代码将视图与数据进行绑定,还可以实现双向绑定。
怎么用?
一、基本使用
步骤一:在app下的build.gradle下配置Databinding
配置Databinding1.通过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修饰,否则报错
五、在列表中使用也是一样的
好啦,你可以去在项目中使用啦!!!
网友评论