Android Kotlin Viewbinding封装

目录

Viewbinding配置

Activity封装

Activity使用

Fragment封装

Fragment使用

Dialog封装

Dialog使用


Viewbinding配置

android { viewBinding { enabled = true } 
} 

Activity封装

import android.os.Bundle
import android.view.LayoutInflater
import androidx.appcompat.app.AppCompatActivity
import androidx.viewbinding.ViewBinding/*** @explain* @author Created by PGC on 2023/12/11 9:56.*/
abstract class BaseBindingActivity<VB : ViewBinding>(private val inflate: (LayoutInflater) -> VB) : AppCompatActivity() {lateinit var binding: VBoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = inflate(layoutInflater)setContentView(binding.root)}}

Activity使用

class ExampleActivity : BaseBindingActivity<ActivityExampleBinding>(ActivityExampleBinding::inflate) {@SuppressLint("SetTextI18n")override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding.exampleBindingBt.text = "binding"}
}

Fragment封装

abstract class BaseBindingFragment<VB : ViewBinding>(private val inflater: (LayoutInflater, ViewGroup?, Boolean) -> VB) :Fragment() {private var _binding: VB? = nullval binding: VB get() = _binding!!override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?): View? {_binding = inflater(inflater, container, false)return binding.root}override fun onDestroyView() {super.onDestroyView()_binding = null}}

Fragment使用

class ExampleFragment : BaseBindingFragment<FragmentExampleBinding>(FragmentExampleBinding::inflate) {@SuppressLint("SetTextI18n")override fun onViewCreated(view: View, savedInstanceState: Bundle?) {super.onViewCreated(view, savedInstanceState)binding.exampleBindingTv.text="binding"}
}

Dialog封装

abstract class BaseBindingDialog<VB : ViewBinding>(context: Context,themeResId: Int,private val inflate: (LayoutInflater) -> VB) : Dialog(context, themeResId) {lateinit var binding: VBconstructor(context: Context, inflate: (LayoutInflater) -> VB) : this(context, 0, inflate)override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = inflate(layoutInflater)setContentView(binding.root)}
}

Dialog使用

class ExampleDialog(context: Context): BaseBindingDialog<DialogExampleBinding>(context,0,DialogExampleBinding::inflate) {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding.tv.text = "binding"}
}

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

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

相关文章

verilog基本语法-case语句-译码电路,编码电路,选择器电路

概述&#xff1a; 本节主要讲解LUT构造的组合逻辑电路中的译码电路&#xff0c;编码电路&#xff0c;选择器电路。这些基本电路是使用的最广泛的电路&#xff0c;但是一般情况下很容易忽略这些电路。其中译码电路是构成RAM中写地址的电路&#xff0c;而选择电路是构成RAM中数据…

Vue xtermjs 终端

Vue xtermjs 终端 安装步骤如下 安装xtermjs所需要的插件 npm install --save xterm npm install --save xterm-addon-fit npm install --save xterm-addon-attachHTML代码片段 <template><div><a-drawertitle"终端"placement"right":cl…

视频数据卡设计方案:120-基于PCIe的视频数据卡

一、产品概述 基于PCIe的一款视频数据收发卡&#xff0c;并通过PCIe传输到存储计算服务器&#xff0c;实现信号的采集、分析、模拟输出&#xff0c;存储。 产品固化FPGA逻辑&#xff0c;实现PCIe的连续采集&#xff0c;单次采集容量2GB&#xff0c;开源的PCIe QT客…

安卓11添加切换以太网动态静态方法

客户要在app中自由切换动态&#xff0c;静态方法&#xff0c;直接把系统jar-api给他搞了半天搞不定&#xff0c;只有在系统里给他实现一个接口&#xff0c;方法如下&#xff1a; Index: packages/apps/Settings/AndroidManifest.xml--- packages/apps/Settings/AndroidManifes…

11.仿简道云公式函数实战-逻辑函数-TRUE

1. TRUE函数 TRUE 函数可直接返回逻辑值 true。 2. 函数用法 TRUE() 3. 函数示例 TRUE 函数一般不会作为函数单独使用&#xff0c;可与其他函数一起使用&#xff0c;或作为判断逻辑的结果。如&#xff0c;判断字段值是否为空时&#xff0c;设置公式为IF(ISEMPTY(方案选择)…

接口使用@requestMapping应用场景

父类&#xff1a; public class BaseController<T> {PostMappingpublic ResponseValue add(HttpServletRequest req, Validated({DeleteValid.class}) T entity) throws Exception {return service.add(req, entity);}GetMappingpublic ResponseValue searchList(HttpSe…

02 python语句判断

2.1 布尔类型与比较运算符 演示bool类型的定义 比较运算符的应用# 定义变量储存布尔类型的数据 bool1True bool2False print(fbool1变量的内容是&#xff1a;{bool1},其类型是{type(bool1)}) print(fbool2变量的内容是&#xff1a;{bool2},其类型是{type(bool2)})# 比较运算符的…

“以赛促创”火正旺! 诸暨海归小镇逐梦“天空之城”

大雪节气已过&#xff0c;寒意渐浓&#xff0c;海归小镇却涌动着一股热潮。12月13日&#xff0c;以“海归智汇新时代 聚力创赢新发展”为主题的欧美同学会第三届“双创”大赛空天装备产业赛区决赛在浙江诸暨举行。作为全国唯一一个落地此项赛事的县级城市&#xff0c;诸暨将以赛…

c++用#define宏定义来批量实例化对象

参考自 PX4-Autopilot/platforms/common/include/px4_platform_common/param.h 正常实例化一个类Myclass Myclass obj 实例化多个类&#xff1a; Myclass1 obj1; Myclass2 obj2; Myclass3 obj3; ... 如果之后还要对这些对象都进行统一的一系列操作&#xff0c;比如obj1.up…

面试题-反转链表

反转链表的java写法&#xff0c;熟能生巧。 目录 一、题目描述 数据范围 样例 二、实现代码&#xff08;java&#xff09; 一、题目描述 定义一个函数&#xff0c;输入一个链表的头结点&#xff0c;反转该链表并输出反转后链表的头结点。 思考题&#xff1a; 请同时实现迭代…

【PostgreSQL】从零开始:(三)PgAdmin4下载与安装

【PostgreSQL】从零开始:&#xff08;三&#xff09;PgAdmin4下载与安装 pgAdmin简介liunx下部署通过yum部署pgAdmin4&#xff08;6.21&#xff09;1.安装依赖包2.永久停止防火墙3.配置pgadmin4项目源4.下载并安装pgAdmin45.执行初始化命令6.访问我们的网站 liunx下通过python方…

Linux install manual 1Panel

前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。1Panel 的功能和优势包括: 快速建站:深度集成 Wordpress 和 Halo,域名绑定、SSL 证书配置等一键搞定;高效管理:通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等;安全可…

利用机器学习实现客户细分的实战

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 今天来学习一下机器学习实战中的案例&#xff1a;创建客户细分&#xff0c;在此过程中也会补充很多重要的知识点&#xff0c;欢迎大家一起前来探讨学习~ 一、导入数据 在此项目中&#xff0c;我们使用 UCI 机器学习代码库…

Mysql研学-SQL语言基础

一 DDL语句:数据定义语言 1 作用:操作表 2 常用关键字 CREATE(创建) DROP(删除(销毁)) ALTER修改 3 格式 -- 单行注释/* 多行注释 */删除表:DROP TABLE [IF EXISTS] 表名;括号内为查看该表是否存在有则删创建表:参考JavaBean中定义有参构造器 &#xff08;最后一列不写逗…

如何创建逼真的3D模型

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 1、如何创建逼真的3D模型 通过调整默认的表面贴图&#xff0c;可以为…

DNSLog漏洞探测(七)之SQL注入漏洞实战

DNSLog漏洞探测(七)之SQL注入漏洞实战 在前面的文章之中&#xff0c;我们已经学习了XSS、RCE、XXE、SSRF漏洞中有关于DNSLog平台的使用。这些漏洞本身在执行时就有解析URL地址&#xff0c;发起网络请求的操作&#xff0c;所以只要我们把DNSLog平台获取的子域名地址发送到存在漏…

电脑监控软件丨你能接受在电脑上安装吗

很多人说自己是不能接受老板在电脑上安装电脑监控软件的&#xff0c;怎么说呢&#xff0c;我自己本身是没有任何意见的。 我是可以接受的。 先来说说我的理由&#xff1a; 我是站在企业管理者的角度上&#xff0c;来思考这个问题的。老板花钱雇佣员工不是来公司来上网聊天打游…

docker-harbor私有仓库

docker 三大组件 镜像 容器 仓库 仓库&#xff1a;保存镜像 私有&#xff0c;自定义用户的形式登录仓库&#xff0c;拉去或者上传镜像&#xff08;内部管理的用户&#xff09; harbor&#xff1a;是由VMware公司开发的&#xff0c;开源的企业级的docker registry 项目 。 帮…

阿里云国际DDOS设置流量清洗阈值

当您的公网IP资产的业务流量超过正常流量基线时&#xff0c;DDoS防护会对攻击流量进行清洗&#xff0c;并尽可能保障您的业务可用。本文介绍了设置流量清洗阈值的方法。 背景信息 DDoS原生防护在清洗判定中采用了AI智能分析的方法。您可以根据正常业务流量基线&#xff0c;设…

图像特征提取-角点

角点特征 大多数人都玩过拼图游戏。首先拿到完整图像的碎片&#xff0c;然后把这些碎片以正确的方式排列起来从而重建这幅图像。如果把拼图游戏的原理写成计算机程序&#xff0c;那计算机就也会玩拼图游戏了。 在拼图时&#xff0c;我们要寻找一些唯一的特征&#xff0c;这些…