30s讲清DataBinding 数据绑定

本文详细比较了DataBinding和ViewBinding在Android开发中的异同,介绍了如何在Fragment和Activity中使用DataBindingUtil.inflate()以及创建Binding类进行数据绑定,包括单向和双向数据绑定的实现方法,以及如何在XML布局中声明和绑定属性。
摘要由CSDN通过智能技术生成

目录

1.认识

2.与ViewBinding的比较

同:

异:

3.绑定数据

在Fragment内

第一种:DataBindingUtil.inflate()

第二种:调用对应的Binding类,如这里FragmentDrawBinding

在Activity内

目前利用DataBindUtil 的setContentView获取对应Binding类

4.单向绑定

4.1 封装对象类

4.2 绑定xml布局

4.3 在对象类中 获取binding, 数据修改 后 view上对应绑定属性会实时变化

5.双向绑定

5.1 实现内部保存类 ViewModel

5.2 User对象类 

5.3 绑定xml

5.4 对象类的实现


1.认识

DataBinding,顾名思义就是数据绑定,可以看到现在的三个组件都与数据有关系,ViewModel数据持有,LiveData数据观察、DataBinding数据绑定

2.与ViewBinding的比较

同:

ViewBinding的目的是为了取代我们日常开发中比较繁琐的findViewById(),通过ViewBinding我们可以直接拿到View设置属性,而Databinding同样可以。‘

异:

1.DataBinding可以在layout布局文件中设置View的属性,如text=“@={ 。。。。}”

2.

另外一个不同点在于ViewBinding只需要在gradle配置文件中开启即可为所有的layout文件自动生成ViewBinding类,而DataBinding除了需要在gradle中开启之外,只有在layout文件中以<layout>作为根标签的layout文件才会生成对应的DataBinding类。

如下:

3.绑定数据

不论Fragment还是Activity,都记得在方法外先声明binding

Android的DataBinding在已经内置了,因此只需要在app模块的build.gradle中开启就可以使用了

在layout布局文件添加<layout>根标签,并且加上<data> 标签,其中声明绑定数据类型

在Fragment内

onCreateView内——》最终调用inflate()

第一种:DataBindingUtil.inflate()

第二种:调用对应的Binding类,如这里FragmentDrawBinding

在Activity内

目前利用DataBindUtil 的setContentView获取对应Binding类

4.单向绑定

数据源改变——》影响View上数据显示  实时改变

以下用Java代码演示

4.1 封装对象类

实现BaseObservable的接口

实现对应属性的set和get方法

set方法  最后得 notifyChange()  通知改变

4.2 绑定xml布局

将容器改为Constraintlayout  ,快捷键  alt+Enter ,选择蓝框方法

绑定类在xml中声明 ,name自命名, type选择对应的  类

在需要绑定的控件属性 设置@{name.属性}

4.3 在对象类中 获取binding, 数据修改 后 view上对应绑定属性会实时变化

5.双向绑定

顾名思义  —— 内部数据和view上显示的数据同时变化 , 且可以通过 view的数据变化 改变内部数据

5.1 实现内部保存类 ViewModel

5.2 User对象类 

先在build.gradle (app)添加kotlin-kapt

同样继承BaseObservable

不同是 get方法需要加@Binable接口   

            set方法需要notifyPropertyChange(BR.属性)  【这里BR需要在get方法写完后,rebuild一下,才能生成对应的文件】

5.3 绑定xml

将容器改为Constraintlayout  ,快捷键  alt+Enter ,选择蓝框方法

绑定类在xml中声明 ,name自命名, type选择对应的  类

在需要绑定的控件属性 设置  @={name.属性}  

5.4 对象类的实现

获取绑定类,将数据存在viewModel中, viewModel中数据和 EditinputView的数据二者改变都会直接改变另一方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值