本文主要是介绍30s讲清DataBinding 数据绑定,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
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的数据二者改变都会直接改变另一方

这篇关于30s讲清DataBinding 数据绑定的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!