首页 > 其他分享 >ViewBinding - Android中findViewById的替代方案

ViewBinding - Android中findViewById的替代方案

时间:2023-05-21 15:13:05浏览次数:33  
标签:xml findViewById ViewBinding 布局 Binding activity Android main

谷歌已经把kotlin-android-extensions插件废弃,目前推荐使用ViewBinding来进行替代。

要想使用ViewBinding需要注意两件事。第一确保你的Android Studio是3.6或更高的版本。第二,在你项目工程模块的build.gradle中加入以下配置

android {
   ...  
    buildFeatures {
        viewBinding true
    }
}

OK,全局配置完毕!

当然,如果有些布局文件你不希望为它生成对应的Binding类,可以在该布局文件的根元素下加如下声明

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    tools:viewBindingIgnore="true">
    ...
</LinearLayout>

一旦启动了ViewBinding功能之后,Android Studio会自动为我们所编写的每一个布局文件都生成一个对应的Binding类。

Binging类的命名规则是将布局文件按驼峰方式重命名后,再加上Binging作为结尾。

假如我们定义了一个activity_main.xml布局文件,那么与之对应的Binging类就是ActivityMainBinding。

接下来我们看一下如何使用ViewBinding来实现在MainActivity中设置TextView内容的功能

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.textView.text = "Hello"
}

ViewBinding的用法可以说就是这么简单。其中ActivityMainBinding就是activity_main.xml布局文件对应的Binding类,inflate函数用来加载布局,参数接收一个LayoutInflater(在Activity中可以直接获取使用)。接着调用Binding类的getRoot()方法,可以得到activity_main.xml根元素的实例。

注意:我们要把根元素的实例传入到setContentView()函数中,这样Activity就可以显示activity_main.xml这个布局的内容了。

接着调用getTextVew函数可以获取id为textView的元素实例,最后为TextView赋值。

本篇就介绍到这里,如果想了解ViewBinding更多的用法(Frgment、Adapter中使用ViewBinding等知识内容),请查看此连接(郭霖大神总结):

https://cloud.tencent.com/developer/article/1781726?areaSource=102001.13&traceId=VRtiOCCKLXj-fGovGPjiN

 

标签:xml,findViewById,ViewBinding,布局,Binding,activity,Android,main
From: https://www.cnblogs.com/shibin90/p/17418627.html

相关文章

  • 2016 Android Top 10 Library
    阅读本文大概需要10.24分钟。过去的2016年,开源社区异常活跃,很多个人与公司争相开源自己的项目,让人眼花缭乱,然而有些项目只是昙花一现,有些项目却持久创造价值,为开发者提供了极大的便利,这些终究由时间来判断。今天,我就来整理一篇,我个人认为的2016年对Android开发有巨大帮助的......
  • 2016 Top 10 Android Library
    过去的2016年,开源社区异常活跃,很多个人与公司争相开源自己的项目,让人眼花缭乱,然而有些项目只是昙花一现,有些项目却持久创造价值,为开发者提供了极大的便利,这些终究由时间来判断。今天,我就来整理一篇,我个人认为的2016年对Android开发有巨大帮助的,甚至改变了Android开发方式的......
  • Android 开发者的未来在哪里?
    阅读文本大概需要2.8分钟。最近经常有人后台给我留言,说自己是刚工作没多久的Android开发者,现在很迷茫,也很焦虑,各种行情表明,移动开发已经不再那么火热,甚至有慢慢退潮的趋势,从昨天发的一篇StackOverflow的2017开发者调查报告也可以看到,移动开发的工资垫底,自己对移动开发的未......
  • 荐号 | Android 相关的公号推荐
    之前有部分人觉得我的文章更新慢,那么今天就来给大家推荐一些Android相关的其他公号,这些公号的作者都是我比较熟的圈内朋友,也是大家熟知的比较活跃的一些分享者,他们在业余时间也在进行原创分享,不过阅读量都不怎么大,所以很希望这些好的原创文章能被更多的人看到,大家可以按照自己的......
  • Android 热补丁之 Tinker 原理解析
    阅读本文大概需要1分钟。哈,一晃好几天没更文了,然后后台又一大堆读者给我留言,说没有我的文章,感觉生活都没有动力了,对于这样的读者,我只能说:你肯定单身吧?主要是上周五开始就出去旅游了,跟着老板一起出去嗨了一把。所以一直没更新,但是,我是不会忘记你们的,这不,刚回归就给大家带来一篇干......
  • Android 秒级编译 Freeline
    我们知道Android的编译很慢,尤其是项目大点的时候,那编译速度简直难以忍受,极大的降低了我们的开发效率,之前的文章「Android高效调试神器JRebel」给大家介绍过,但是是付费的,用起来不是那么自由,而今天给大家介绍另外一个强大的工具–Freeline,绝对秒级编译。什么是Freeline?Freelin......
  • 这些小工具让你的Android开发更高效
    本文为作者「Tikitoo」投稿,应该多少受我点影响,Tikitoo也是一位自学的Android工程师,并且完全通过自学找到一份还不错的工作。互联网爱好者,并且是简书专题的运营者,在做Android开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为......
  • 安居客 Android 项目架构演进
    阅读本文大概需要6.66分钟。导读:这篇文章是我的一位好友,现担任安居客AndroidTeamLeader的张磊所写,记录了安居客Android端这几年来的架构迁移与变化,非常值得看,也很有借鉴意义,所以这里推荐给大家,并已获独家授权发布,感兴趣的可以在文末关注作者的GitHub与知乎专栏。入职安居......
  • Flutter安装会显示Android license status unknown.
    [Flutter安装问题(持续更新版)-简书](https://www.jianshu.com/p/55bca250ace4)问题1:XAndroidlicensestatusunknown.解决办法:安装一直卡死在这,主要是执行了他提示的那个license命令后,会显示“Androidsdkmanagertoolwasfound,butfailedtorun(D:\Android\AndroidSDK......
  • Android之ActionBar、Tabs、Fragment、ViewPager实现标签页切换并缓存页面
    感觉Android到处都是坑,每个地方都要把人折腾半天。今天来简单说说Android之ActionBar、Tabs、Fragment、ViewPager实现标签页切换并缓存页面关于他们的介绍就不多说了,网上到处都是,只说关键的部分:我在开发的时候遇到几个疑难问题,花费大量时间处理,总结如下:1.关于Fragment内部......