相较于传统的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…
\