随着去年Google把Jetpack的推出,DataBinding终于被扶正,历经几年的迭代,使得DataBinding这个库已经相当完善,
但是DataBinding却不被传统的Android开发者们所接受,“xml里面写逻辑太烦了”,“编译太慢了”,“坑太多,找不到报错”
这些言语屡见不鲜,造成这些的原因大部分是由于官方文档简陋,以及各类博客教程素质参差不齐所导致的,我17年第一次接触DataBinding的时候,
也是被虐得体无完肤,但是去年,我放开胆子在正式项目里面踩坑,终于,功夫不负有心人,在经历了两个项目之后,我已经将DataBinding熟练运用,
并完成了自己的基础架构,而这篇文章,就是带领大家从学习到踩坑到熟练掌握DataBinding,并明白数据驱动好处。
我的基础配置
AS版本:3.4.1
语言:Kotlin
sdk版本:androidx
sdk版本:androidx
开始
在build.gradle中启用DataBinding 并应用kapt插件
1 |
|
此时准备工作就完成了,下面创建一个新的TestActivity,并同时创建对应的activity_test.xml
切换到xml中,将光标移动到根布局的名称上 使用Alt+Enter快速将xml转换成DataBinding模板
转换之后如图
可以看到,之前的根布局被一个layout标签包起来了,此时编译器自动为我们生成了一个ActivityTestBinding的抽象类,
然后再看到data标签,在这个标签里面,我们需要定义需要引入的数据,引入方式如下:
其中name为引入数据的自定义命名,可随意取,type需要填写数据的类型,这样就定义好了一个数据,接下来如何使用这个数据,
首先我们到对应的数据类中声明变量,有两种方式:
第一种,使用DataBinding为我们准备的数据包装类来声明变量,
DataBinding库本身为我们提供了一系列的包装类来实现数据与UI的同步更新,总共有以下几种:
ObservableInt,ObservableBoolean,ObservableLong,ObservableDouble,ObservableChar,ObservableShort,ObservableByte,ObservableField
然后我们在xml中绑定数据
绑定数据的写法是 @{数据}