本文主要是介绍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 数据绑定的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!