Kotlin 开发Android app(十):Android控件绑定ViewBinding

news2024/11/18 1:37:22

上一节中,我们知道了Android的布局,这种把界面和逻辑控制分开,是编程里很好的分离方式,也大大的解耦了界面和逻辑控制,使得编程的逻辑不在和界面挂钩。

有了界面的布局,我们需要把界面和代码部分进行绑定,这样一来我们就能通过代码来控制界面的空间。

在这里插入图片描述

java之前的代码控制中,是这样进行界面的关联的。

setContentView(R.layout.activity_main)

关联起来非常的简单,但有个问题比较麻烦,对于界面里的空间,每个空间如果在代码中需要使用到,我们需要通过 findViewById 把界面的空间绑定到代码中来,这样看起来是非常麻烦的,如果界面的控件比较少还可以接受,如果界面的控件一多,整个代码都是 findViewById ,都在进行控件的绑定了。我们需要的是,不仅仅是关联界面,还要把控件自动的绑定起来。

之前我们采用的都是 kotlin-android-extensions ,但 kotlin-android-extensions 在小项目中比较好用,项目大了可用有自己的问题。可用参考这篇文章。

开启ViewBinding 配置

如果在Kotlin中进行控件的绑定,可用不需要插件,而直接进行如下的配置,就能开启ViewBinding

appbuild.gradle 文件下的 android 标签下加入下面的代码:

    viewBinding{
        enabled =true
    }

在这里插入图片描述
这样,界面的绑定就开启了。

绑定后的界面文件

我们把界面放在xml中,xml的名称在自动绑定后,会形成一个类,类的名称和xml名称相关,以驼峰命名,并在末尾添加 Binding,如生成的 activity_main.xml,会形成一个ActivityMainBindingxml的界面都绑到ActivityMainBinding 上了。

我们简单的建立如下的xml界面:

    <TextView
        android:id = "@+id/tv_hello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

代码中的绑定和访问

有了ActivityMainBinding 以后,在界面代码中就可以用这个类来访问到界面里的任何成员了。

先把代码设置到这个类中:

        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

我们不在使用 setContentView(R.layout.activity_main)的方式而是取得binding.root,绑定到代码中来,访问控件就非常的简单了。

binding.tvHello.setText("Hello ViewBinding")

小结

ViewBinding的绑定方式,使我们的代码和界面库之间的沟通变得十分的简单。也使得代码不会太多的冗余,避免了一直在找控件的代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/30000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenPose训练教程

找遍全网都没有非常完整的OpenPose训练教程 决定自己摸索并且记录下来 openpose作者发布了一份训练代码&#xff0c;下面根据这个来操作 GitHUB地址&#xff1a; openpsoe_train 环境&#xff1a;ubuntu 执行matklab脚本的时候懒得下载新的matlab 就在windows下运行的 感觉没…

品质为先,服务不停,广州流辰信息公司恪守初心,匠心为民!

随着互联网技术的蓬勃发展&#xff0c;越来越多的企业也感受到了日益激烈的竞争&#xff0c;也意识到墨守成规的发展模式必当会让企业停滞不前&#xff0c;只有一步一个脚印&#xff0c;始终跟随市场的脚步创新升级&#xff0c;才有可能在汹涌的市场洪流中站稳脚跟。广州流辰信…

精简 Windows10

下载链接文后评论里找&#xff1a; 旧机福音 极限精简Win10系统Tiny10https://baijiahao.baidu.com/s?id1743901721464184983不想成天折腾操作系统&#xff0c;一直以来都认为跟着微软每月升级就好了。但是现实啪啪的打脸&#xff1a;升级到Windows11 22H2 后&#xff0c; 连…

常见算法设计与分析的简单C++代码实现(排列、二分法搜索、Dijkstra算法、元素换位、单调子序列、硬币问题、运动员最佳匹配问题)

常见算法设计与分析的简单C代码实现&#xff08;排列、二分法搜索、Dijkstra算法、元素换位、单调子序列、硬币问题、运动员最佳匹配问题&#xff09;1 一些简单排列问题2 二分法查找3 前后元素换位4 找最长单调递增子序列&#xff08;O(n2)复杂度&#xff09;5最小硬币问题一、…

c3p0,DBCP,Druid(德鲁伊)数据库连接池

c3p0&#xff0c;DBCP&#xff0c;Druid&#xff08;德鲁伊&#xff09;数据库连接池 每博一文案 佛说&#xff1a;前世 500 次的回眸&#xff0c;才换来今生的一次擦肩而过。 人与人之间的缘分&#xff0c;真的无需强求&#xff0c;并不是所有的感情都能天长地久&#xff0c;…

C#压缩图片

SqlSer数据库设置保存图片字段类型为Image类型 对应保存 方法参数为图片路径&#xff0c;压缩后路径&#xff0c;压缩最大宽度&#xff0c;压缩最大高度 引用类型using System.Data; using System.Drawing; using System.IO; \完整类 /// <summary> /// 按比例缩放&…

七牛qshell 批量上传 mac 本地目录

七牛qshell 批量上传 mac 本地目录下载路径及使用方法(官方)下载到自己指定的文件夹添加环境变量,使qshell在任意地方可以执行添加密钥 生成账户文件下载路径及使用方法(官方) https://developer.qiniu.com/kodo/1302/qshell记录自己部署遇到的问题及操作步骤 下载到自己指定…

音视频开发核心知识点及源码解析,还不赶紧收藏起来

随着基础设施的完善&#xff08;光纤入户、wifi覆盖、5G普及&#xff09;的影响&#xff0c;将短视频、直播、视频会议、在线教育、在线医疗瞬间推到了顶峰&#xff0c;人们对音视频的需求和要求也越来越强烈 音视频开发还具有许多方向&#xff0c;比如&#xff1a; 如果对音视…

C语言:while后加分号与for后加分号的区别

while 后面不能加分号&#xff0c;否则虽然编译可以通过&#xff0c;但是执行程序时会发生死循环#include <stdio.h> int main() { int i1,total0; while(i<100)//不能在 while 后面加分号 { totali; i;//循环…

个人付费专栏上线预热

个人付费专栏上线预热 专栏地址&#xff1a;请点击访问 文章目录一、订阅这个专栏有什么好处&#xff1f;二、实战项目预告1. 活动类站点 &#xff08;已完成前端后端&#xff09;2. 电商项目 &#xff08;筹备中&#xff0c;一比一还原设计图&#xff09;3. 论坛问答系统 &…

每日三题-爬楼梯、买卖股票的最佳时机、正则表达式匹配

&#x1f468;‍&#x1f4bb;个人主页&#xff1a; 才疏学浅的木子 &#x1f647;‍♂️ 本人也在学习阶段如若发现问题&#xff0c;请告知非常感谢 &#x1f647;‍♂️ &#x1f4d2; 本文来自专栏&#xff1a; 算法 &#x1f308; 算法类型&#xff1a;Hot100题 &#x1f3…

IP 摄像机移动应用 SDK 开发入门教程(安卓版)

涂鸦智能安卓版摄像机&#xff08;IP Camera&#xff0c;简称 IPC&#xff09;SDK 是基于智能生活 App SDK 开发而成。 通过移动应用控制物理网设备是常见的使用场景&#xff0c;但由于设备的品类丰富&#xff0c;增大了应用开发难度。因此 智能生活 App SDK 提供了常见的垂直…

支付宝支付内网穿透

支付宝支付&内网穿透一 沙箱环境二 python第三方模块python-alipay-sdk三 python-alipay-sdk二次封装四 支付接口五 内网穿透5.1 cpolar软件5.2 测试支付宝post回调一 沙箱环境 注册认证沙箱环境&#xff1a;https://openhome.alipay.com/platform/appDaily.htm?tabinfo …

【FileZila】实现windows与Linux系统文件互传

1、下载安装FileZila客户端 根据自己的PC系统版本&#xff0c;下载对应的FileZila客户端https://www.filezilla.cn/download/client 2、Linux服务端&#xff0c;安装配置vsftpd 2.1 安装ftp服务 sudo apt-get install vsftpd2.2 配置ftp服务 &#xff08;1&#xff09;打开ft…

Verilog 实现CDC中单bit 跨时钟域,从慢时钟域到快时钟域

单bit 跨时钟域&#xff0c;从慢时钟域到快时钟域1&#xff0c;首先&#xff0c;了解一些问题2&#xff0c;RTL代码设计3&#xff0c;testbench测试代码4&#xff0c;RTL代码和testbench综合的电路原理图5&#xff0c;前仿真&#xff0c;验证![在这里插入图片描述](https://img…

关于某些地区延期举办2022年11月27日 PMI认证考试等有关事项的通知

22年.11月22日通知&#xff1a; 关于成都等六个地区延期举办2022年11月27日 PMI认证考试等有关事项的通知 尊敬的考生&#xff1a; 受近日疫情影响&#xff0c;结合当地疫情防控规定和活动举办要求&#xff0c;成都、武汉、西安、昆明、银川、长春地区现不满足组织2022年11月…

A. The Enchanted Forest(思维)

Problem - 1687A - Codeforces 玛丽莎来到魔法森林采摘蘑菇。 魔法森林可以用X轴上编号为1到n的n个点来表示。在玛丽莎开始之前&#xff0c;她的朋友帕秋莉用魔法检测了每个点上的蘑菇的初始数量&#xff0c;用a1,a2,...,an表示。 玛丽莎可以在第0分钟时从森林的任何一点开始…

Allegro如何输出IDF文件操作指导

Allegro如何输出IDF文件操作指导 Allegro支持输出IDF文件,用于导入结构软件中检查和查看,具体操作如下 点击File-export-IDF 会弹出一个对话框,file name type选择IDF 然后点击export,输出IDF文件,文件已经输出 This section is describe what the function allegro h…

项目管理工具需要具备的五点功能

将新产品推向市场是有益的&#xff0c;但也具有挑战性。从一个概念到成功发布的过程涉及很多事情。在产品开发过程中&#xff0c;许多内部团队都参与了将概念推向市场的工作。例如&#xff0c;设计团队、工程团队和营销团队都在这个生命周期中发挥作用。协调时间表、阶段和可交…

【Vue】组件化和声明周期函数

1. 组件化 组件化就是指一个后台我们将它的各个部分拆分成各个组件&#xff0c;比如 csdn 的上边栏、右侧广告区等都可以是组件&#xff0c;组件可以复用。Vue 的一个好处就是组件化。 <!DOCTYPE html> <html lang"en"> <head><meta charset&…