当前位置: 代码网 > it编程>App开发>Android > kotlin中使用ViewBinding绑定控件的方法

kotlin中使用ViewBinding绑定控件的方法

2024年05月15日 Android 我要评论
kotlin中使用viewbinding绑定控件什么是viewbinding?view binding是android studio 3.6推出的新特性,主要用于减少findviewbyid的冗余代码

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绑定控件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com