Android开发提升效率之DataBinding——基本使用

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

DataBingding

  1. Android开发提升效率之DataBinding——基本使用
  2. Android开发提升效率之DataBinding——进阶开发
  3. Android开发提升效率之DataBinding——双向绑定

博客创建时间: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或更高版本的插件。

优势

  1. 再也不需要编写findViewById了,比butterknife也好用多了
  2. 实时监测数据,自动刷新控件显示

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

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值