DataBingding
博客创建时间:2021.04.12
博客更新时间:2021.04.12
以Android studio build=4.1.3,gradle=6.5,SdkVersion 30来分析讲解。如图文和网上其他资料不一致,可能是别的资料版本较低而已
前言
早在2019年就写过DataBinding的使用系列博客,只是当年使用的富文本模式书写,格式丑陋不堪。习惯博客使用markdown书写后,对以前的文章再也看不下去,只能重新再写一遍。
经过两年的使用,总结了大量的使用心得,刚好可以更加完善的介绍DataBingding,该框架让代码更加简单且可读,强烈推荐路过的你学习使用!
背景
早在2015谷歌 I/O大会上就已提出DataBinding。如下是2018年google I/O大会,发布的AAC及其他的图。在2019的I/O 大会中AAC 有了新的趋势和改变CameraX、SavedState for ViewModel、Jetpack Compose。

数据绑定库既具有灵活性又具有广泛的兼容性—它是一个支持库,因此您可以将其与所有Android平台以及Android 2.1(API级别7+)一起使用。同时要满足Android Gradle 1.5.0-alpha1或更高版本的插件。
优势
- 再也不需要编写findViewById了,比butterknife也好用多了
- 实时监测数据,自动刷新控件显示
dataBinding的本身是对View层状态的一种观察者模式的实现。
DataBinding配置
1. 配置
首先在module的build.gradle中配置如下
//早期配置
dataBinding{
enabled=true
}
// 新版替代方案
buildFeatures {
dataBinding = true
}
上面的配置满足了Java形式的支持,如果你需要支持在kotlin中使用Databinding,则需要在module的build.gradle中继续配置
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-parcelize'
kapt "androidx.databinding:databinding-compiler:4.1.3"
2. DataBinding配置使用原理
为什么配置dataBinding=true后就可以使用了?
Android Studio中是依靠gradle来管理项目的,在创建一个项目时,从开始创建一直到创建完毕,整个过程是需要执行很多个gradle task的,这些task有很多是系统预先帮我们定义好的,比如build task,clean task等,DataBinding相关的task也是系统预先帮我们定义好的。
`
但是默认情况下,DataBinding相关的task在task列表中是没有的,因为我们没有开启dataBinding,但是一旦我们通过设置dataBinding = true的方式开启DataBinding之后,DataBinding相关的task就会出现在task列表中,每当我们执行编译之类的操作时,就会执行这些dataBinding Task。 这些task的作用就是检查并生成相关dataBinding代码,比如dataBindingExportBuildInfoDebug这个task就是用来导出debug模式下的build信息的。
针对每个Activity或者Fragment的布局,在编译阶段,会自动生成一个ActivityDataBinding类的对象,该对象持有Activity要展示的数据和布局中的各个view的引用。
该方式有如下优势:将数据分解到各个v

本文详细介绍了Android中的DataBinding库,包括其配置、基本使用和注意事项。DataBinding能够简化代码,提高开发效率,避免手动查找视图。通过配置build.gradle启用DataBinding,然后在XML布局中使用,结合Activity或Fragment获取ViewDataBinding实例,实现数据绑定和事件监听。文章还提到了集合框架的使用、别名设置等高级用法,并提供了相关示例代码。总结了DataBinding的优势,并与ViewBinding、RxBinding进行了对比。最后,给出了进一步学习的资源和源码链接。
最低0.47元/天 解锁文章
3061





