欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android开发之DataBinding的使用 (Kotlin)

程序员文章站 2022-05-14 15:26:09
...

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”:
Android开发之DataBinding的使用 (Kotlin)
可以看到生成了 <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

效果如下:
Android开发之DataBinding的使用 (Kotlin)

相关标签: Kotlin