Android 使用View Binding来代替频繁findViewById来得到view

2023-05-16

从 Android Studio 3.6 开始,视图绑定能够通过生成绑定对象来替代 findViewById,从而可以帮您简化代码、移除 bug,并且从 findViewById 的模版代码中解脱出来。

  • 在 build.gradle 中就可以方便快捷地开启视图绑定且无须额外引入依赖库

  • 视图绑定会为 Module 中的每一个布局文件生成一个绑定对象

    (activity_awesome.xml → ActivityAwesomeBinding.java,  activity_main.xml-->ActivityMainBinding.java)

  • 布局文件中每一个带有 id 的视图都会在绑定对象中有一个对应的属性,这个属性将拥有正确的类型,并且空安全

  • 视图绑定完美支持 Java 和 Kotlin 编程语言

代码中如何使用。首页android studio的开发版本要3.6.0以上

1.在module的build.gradle文件中。加上一句话。加在文件的android{}里面就行

viewBinding {
    enabled = true
}
// 需要 Android Gradle Plugin 3.6.0android {    viewBinding {        enabled = true    }}

在 Android Studio 4.0 中,viewBinding 变成属性被整合到了 buildFeatures 选项中,所以配置要改成:

// Android Studio 4.0android {    buildFeatures {        viewBinding = true    }}

2. 正常些xml布局文件。要想获取布局文件的view。则每个view都要有id(android:id="@+id/btn")。 注意点。如果是include的view。也要起id,才能找到。

3. 在 Activity 中使用视图绑定

private ActivityMainBinding mBinding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LayoutInflater inflater = getLayoutInflater();
        //由于次activity对应布局文件是activity_main.xml所以会自动绑定ActivityMainBinding类调用inflate方法则可以得到此对象
        mBinding = ActivityMainBinding.inflate(inflater);
        setContentView(mBinding.getRoot());//每个对象都有一个getRoot方法,就是得到这个view

        mBinding.btn.setText("glide");//布局文件中有个按钮的id为btn,直接调用.btn可以得到button对象。
        mBinding.btn.setOnClickListener(this);

    }

使用视图绑定时,无须再调用 findViewById 方法,只要直接调用绑定对象中的对应属性即可。

布局的根视图(无论有没有 id)都会自动生成一个名为 root 的属性。在 Activity 的 onCreate 方法中,要将 root 传入 setContentView 方法,从而让 Activity 可以使用绑定对象中的布局。

注意:

一个常见的错误用法是: 在开启了视图绑定的同时,依然在 setContentView(...)  中传入布局的 id 而不是绑定对象。这将造成同一布局被填充两次,同时监听器也会被添加到错误的布局对象中。

解决方案: 在 Activity 中使用视图绑定时,一定要将绑定对象的 root 属性传入 setContentView() 方法中。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 使用View Binding来代替频繁findViewById来得到view 的相关文章

随机推荐

  • 自己写的HTML与浏览器用截图工具量出来的尺寸不一致

    自己写的HTML与浏览器用截图工具量出来的尺寸不一致border style dashed height 200px width 200px border width 2px border color chartreuse 明显大了50px
  • 网站链接被微信屏蔽禁止访问的解决办法

    最近网站链接被微信屏蔽禁止访问 xff0c 微信内打开网址显示如下提醒 xff1a 已停止访问该网页 xff0c 网页包含诱导分享 关注等诱导行为内容 xff0c 被多人投诉 xff0c 为维护绿色上网环境 xff0c 已停止访问 出现这种
  • 由于找不到vcruntime140_1.dll,无法继续执行代码

    welcome to my blog 问题描述 安装mysql时报错 由于找不到vcruntime140 1 dll 无法继续执行代码 解决方法 这是缺少了动态链接库 ddl文件 跟mysql无关 下载这个ddl文件即可 打开下载地址 找到
  • Ubuntu 18.04 nvidia驱动导致的循环登陆解决

    Ubuntu 18 04 nvidia驱动导致的循环登陆解决 一般情况 无法进入登陆界面 xff1a 建议连接外接显示器看看效果 xff0c 或许有意外的惊喜驱动未安装 显卡未成功切换 自带驱动为屏蔽等 xff1a 请自行尝试百度其它解决方
  • linux下adb连接不上解决方法

    linux下adb连接不上解决方法 参考文章 xff1a xff08 1 xff09 linux下adb连接不上解决方法 xff08 2 xff09 https www cnblogs com asin huang p 8604368 ht
  • 这么学,好玩,有趣,逗死了!(2017年系统规划与管理师上午综合知识试题试题解析(六))

    IT服务风险管理中 xff0c 对风险的识别是很重要的一项工作 识别方法中 xff0c 通常采用文档审查 信息收集技术 检查表 分析假设和图解技术 下面 xff08 xff09 选项不属于信息采集技术 xff08 51 xff09 A 德尔
  • 松滋历史(1)--松滋县建县历史考证

    刘鲋鮈总共4个儿子 xff1a 刘建德 刘梁 刘延年 刘度 长沙顷王刘鲋鮈的儿子刘梁 汉昭帝始元六年 xff08 公元前81年 xff09 xff0c 六月乙未封高城节侯 汉宣帝元康元年 xff08 公元前65年 xff09 xff0c 正
  • 松滋历史(2)--高成县为什么这么高光?

    东汉开国皇帝刘秀 xff0c 是长沙定王刘发第5代世孙 也就是说 xff0c 东汉开国皇帝刘秀爷爷的爷爷与高城侯刘梁 xff08 高城县 xff08 松滋县前身 xff09 创始人 xff09 的爷爷是亲兄弟 在哪个特别讲血统的年代 xff
  • 为什么要报考系统架构设计师考试

    为什么要报考系统架构师考试 最近一年多 xff0c 很多朋友来信 xff0c 问我什么要报考系统架构设计师考试 为什么参加这个考试 xff0c 这个考试有用吗 xff1f 对自己的职业会带来什么好处 xff1f 我想有以下几个方面 xff1
  • 2014年24段魔尺变三叶花视频教程

    2014年24段魔尺变三叶花视频教程 xff08 升级版 xff09 偶是真心喜欢24段魔尺制作的三叶花 xff0c 那是相当漂亮 xff0c 体现了几何美 xff0c 对称美 xff0c 空间美 xff0c 色彩美 xff0c 见下图 三
  • BW:LO数据源初始化步骤(精简版)

    首先在r3上删除 setup table xff0c 然后再填充 setup table xff08 锁定凭证 xff09 xff0c 同时 xff0c 在bw做无数据的初始化 xff0c 最后在bw做full load
  • 24段魔尺,可以折出哪些精美图案

    24段魔尺 xff0c 可以折出哪些精美图案 24段魔尺 xff0c 究竟可以叠成哪些精美图案 xff1f 球 小乌龟 十字架 三叶花 三角形 牛魔王 音符是大家比较熟悉的 偶对这个问题 xff0c 比较感兴趣 先将网络上流传的24段魔尺折
  • 软考证到底有多大个鸟用?

    软考证到底有多大个鸟用 xff1f 小虎以信息系统项目管理师高级证书为例 xff0c 来说说这个证 xff0c 到底有什么用 xff1f 1 求职简历上 xff0c 可以浓彩重抹一笔 xff0c 好好吹嘘下自己 xff0c 是IT高级人才
  • 明朝开国第一重臣李善长长子李祺之长子李芳后裔在松滋

    明朝开国第一重臣李善长长子李祺之长子李芳后裔在松滋 李善长 xff0c 何许人也 肩比汉代丞相萧何 xff1b 功臣里排位第一 xff0c 比刘伯温 徐达 汤和 常遇春 蓝玉 李文忠地位高 xff1b 太师 xff0c 左丞相 xff0c
  • 程序员很少上《非诚勿扰》电视节目相亲之分析

    程序员很少上 非诚勿扰 电视节目相亲之分析 偶观看有线电视32 频道的江苏卫视 非诚勿扰 电视相亲节目 xff0c 半年有余 问题 为什么程序员很少上 非诚勿扰 节目进行相亲呢 xff1f 难道是程序员当中 xff0c 很少有大龄的剩男剩女
  • 2018年CSDN博客排名第一名,花落谁家?

    截止2018年10月9日 https blog csdn net stpeace 小虎问题 xff1a 通过搜索引擎例如 xff1a 百度 搜狗 Bing等 如何快速搜索 xff0c 定位谁是CSDN博客的第几名 xff1f 想知道谁CSD
  • 客家刘开七、刘广传刘氏七律族诗赏析V2.0

    七律 刘氏族诗 南宋 刘广传 骏马骑行各出疆 xff0c 任从随地立纲常 年深外境皆吾境 xff0c 日久他乡即故乡 早晚勿忘亲命语 xff0c 晨昏须顾祖炉香 苍天佑我卯金氏 xff0c 八七男儿共炽昌 一 平仄性赏析 除了 卯 字 xf
  • 系统mysql、sqlserver数据库兼容方案

    一 技术选型 springboot2 4 43 mybatisplus3 4 43 mysql5 7 43 redis3 0 43 二 编写目的 如果产品开发默认数据库采用mysql xff0c 但是当客户提出数据库需要采用Sqlserve
  • eclipse maven plugin 插件 安装 和 配置

    离线插件 点击下载离线安装包 xff1a eclipse maven plugin zip for eclipse helios or higher 解压缩到任意目录 xff08 如这里的plugins目录 xff09 xff1a 目录路径
  • Android 使用View Binding来代替频繁findViewById来得到view

    从 Android Studio 3 6 开始 xff0c 视图绑定能够通过生成绑定对象来替代 findViewById xff0c 从而可以帮您简化代码 移除 bug xff0c 并且从 findViewById 的模版代码中解脱出来 在