viewBinding视图绑定

245 阅读1分钟

相较于传统的findViewById()方法每个组件都要一遍遍的绑定在变量名上,我们更迫切希望于有一种方法或插件能够快速初始化。

早期Kotlin引入了可快速根据xml文件中id设定初始化的插件,然而,出于某些原因,谷歌已经停止了对该插件的支持(早期谷歌直接将该插件写入build.gradle文件中,可以直接使用)。取而代之的是viewBinding

引入viewBinding

在build.gradle(app)的android目录下添加如下代码

viewBinding {
    enabled = true
}

最后记得左上角sync now一下

布局文件设置

对于想要进行操作的组件,我们必须设置id属性。(就算是findViewById也要设计id来查找)

设置布局文件不参加绑定

在布局文件中添加属性

tools:viewBindingIgnore="true"

Activity中使用

开头定义

定义一个binding

private lateinit var binding: ActivityMainBinding

注意最后的 ActivityMainBinding,每个Activity的命名都不一样,其命名规则是xml文件去除下划线和首字母大写,如MainActivity即为ActivityMainBinding。

binding绑定

binding = ActivityMainBinding.inflate(layoutInflater)

使用组件

直接使用binding.(组件id)即可

Fragment中使用的方法Google文档上有详细介绍,就不一一列举。此外,Adapter,引入布局等皆可使用viewBinding。

[谷歌官方文档]  developer.android.com/topic/libra… 

\