Android开发之DataBinding的使用 (Kotlin)
DataBinding—数据绑定,直接在 xml 中绑定数据并实现一些处理逻辑,实时动态刷新数据。
解决问题:
不再需要使用 findViewById,节省性能
更新 UI 数据不用切换至 UI 线程,不用再将数据分解映射到各个 view
注意:本文所有操作都基于 Android studio
环境配置
Android studio 构建项目时不会自带 DataBinding 功能,需要手动启用
在 build.gradle(Module:app) 文件中添加对 DataBinding 的支持:
android {
......
dataBinding {
enabled = true
}
......
}
布局文件
在默认的布局文件的最外层嵌套一对
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- 原布局文件 -->
</layout>
也可以使用快捷键,点击标签后按下 Alt+Enter ,再选择 “Convert to data binding layout”:
可以看到生成了
当我们执行完这一步操作后,Android Studio 会自动生成 DataBinding 相关的编译文件,而且其命名一般是通过 xml 的文件名生成,例如:activity_main.xml,会生成 ActivityMainBinding,而 fragment_about则会生成 FragmentAboutBinding
数据绑定
当默认 Binding 类被生成后,我们就可以直接使用了
假设在项目中使用了一个 fragment_main.xml 片段,在对应的 MainFrangment.kt 中通过如下方式绑定:
class MainFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val binding = DataBindingUtil.inflate<FragmentMainBinding>(inflater,
R.layout.fragment_main, container, false) // 绑定
return binding.root
}
}
事件处理
绑定成功后,就可以直接使用 DataBinding 自带的方法
假设在 fragment_main.xml 中有一个按钮和一个文本显示控件:
<Button
android:id="@+id/choiceButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/choice" />
<TextView
android:id="@+id/choiceTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text" />
在 MainFrangment.kt 中的操作:
val binding = DataBindingUtil...
......
binding.choiceButton.text = "改变" // 定义名称
binding.choiceButton.setOnClickListener{
binding.choiceTextView.text="标签内容改变"
} // 点击事件
......
本来按钮和文本显示控件都已经确定了名称,上面使用 DataBinding 的功能改变了按钮的名称,并且设置了点击事件,点击后文本的内容也改变了。上面的 binding 已经和片段内容绑定了,直接使用binding.choiceButton 选择按钮控件,choiceButton 是按钮的 id。
效果如下:
————————————————
原文链接:https://blog.csdn.net/weixin_44613063/article/details/103553014