Android开发之DataBinding的使用 (Kotlin)
DataBinding—数据绑定,直接在 xml 中绑定数据并实现一些处理逻辑,实时动态刷新数据。
解决问题:
- 不再需要使用
findViewById
,节省性能 - 更新 UI 数据不用切换至 UI 线程,不用再将数据分解映射到各个 view
注意:本文所有操作都基于 Android studio
环境配置
Android studio 构建项目时不会自带 DataBinding 功能,需要手动启用
在 build.gradle(Module:app) 文件中添加对 DataBinding 的支持:
android {
......
dataBinding {
enabled = true
}
......
}
布局文件
在默认的布局文件的最外层嵌套一对 <layout>
标签:
<?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>
也可以使用快捷键,点击标签后按下 Ctrl+Enter
,再选择 “Convert to data binding layout”:
可以看到生成了 <layout>
和 <data>
标签,<data>
用于存放数据
当我们执行完这一步操作后,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
。
效果如下:
上一篇: Handler源码分析
推荐阅读
-
Android开发——Kotlin开发APP使用笔记
-
python开发之IDEL(Python GUI)的使用方法图文详解
-
Android开发笔记之:一分钟学会使用Logcat调试程序的详解
-
Android开发笔记之:Handler Runnable与Thread的区别详解
-
IOS开发入门之storyboard的使用
-
android开发教程之系统资源的使用方法 android资源文件
-
Android开发之选项卡功能的实现方法示例
-
jsp 开发之struts2中s:select标签的使用
-
Android开发中button按钮的使用及动态添加组件方法示例
-
Android开发之拖动条/滑动条控件、星级评分控件功能的实例代码