kotlin中使用viewbinding绑定控件
什么是viewbinding?
- view binding是android studio 3.6推出的新特性,主要用于减少findviewbyid的冗余代码,但内部实现还是通过使用findviewbyid。通过viewbinding,可以更轻松地编写可与视图交互的代码。在模块中启用viewbinding之后,系统会为该模块中的每个 xml 布局文件生成一个绑定类,绑定类的实例包含对在相应布局中具有 id 的所有视图的直接引用。
- 在之前的项目中我们可以通过kotlin-android-extensions插件来绑定view控件的,很遗憾在android studio 4.1之后kotlin-android-extensions插件已被废弃,现在推荐使用viewbinding来进行替代。
- 注意:视图绑定在 android studio 3.6 canary 11 及更高版本中可用
配置viewbinding
- 在app级别的build.gradle中的android闭包中添加buildfeatures,设置viewbinding 为 true
android { namespace xxx compilesdkversion versions.compilesdk defaultconfig { ... } compileoptions { ... } buildfeatures{ viewbinding true } }
配置完成后 sync一下gradle,编译项目后会在build→generated→data_binding_base_class_source_out文件中生成相应的类。binding类的命名规则是将布局文件按驼峰方式重命名后,再加上binding作为结尾。例如,我们activity_main.xml布局对应的binding类就是activitymainbinding。
如果有些布局文件你不希望为它生成对应的binding类,可以在该布局文件的根元素位置加入tools:viewbindingignore="true"
使用viewbinding
在activity使用viewbing,如下代码所示。注意:我们需要先binding类的getroot方法获取到对应布局文件的根元素,然后将其传入到setcontentview方法中,否则设置监听事件会无法生效
class mainactivity : appcompatactivity() { override fun oncreate(savedinstancestate: bundle?) { super.oncreate(savedinstancestate) //初始化viewbinding控件 var mybinding = activitymainbinding.inflate(layoutinflater) //把根元素的对象作为参数传入到setcontentview()方法中 setcontentview(mybinding.root) //botton是activity_main.xml中的一个按钮id mybinding.botton.setonclicklistener { //code logic } } }
到此这篇关于kotlin中使用viewbinding绑定控件的文章就介绍到这了,更多相关kotlin使用viewbinding绑定控件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论