当前位置: 首页 > news >正文

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.lryc.cn/news/257952.html

相关文章:

  • Flutter:web项目跨域问题解决
  • 汽车标定技术(十二)--A2L文件生成的方法
  • 《PySpark大数据分析实战》-03.了解Hive
  • 经验分享|MySQL分区实战(RANGE)
  • Arrays.asList() 和 Collections.singletonList()
  • Firmware Analysis Plus (Fap)固件模拟安装教程(最新)
  • 使用包、Crate 和模块管理项目(上)
  • 【Kotlin】
  • JavaDay17
  • Python爬取酷我音乐
  • 项目实战第四十七讲:易宝支付对接详解(保姆级教程)
  • python的websocket方法教程
  • Qt处理焦点事件(获得焦点,失去焦点)
  • SiteGround如何设置WordPress网站自动更新
  • http代理和SOCK5代理谁更安全?
  • Kotlin关键字二——constructor和init
  • java的long类型超过9位报错:the literal 987654321000 of type int is out of range
  • 【Java期末复习资料】(4)模拟卷
  • 【计算机网络】UDP报文详解
  • 排序算法——归并排序
  • 2023 年安徽省职业院校技能大赛高职组“软件测试”赛项样题
  • Mysql8和Oracle实际项目中递归查询树形结构
  • docker mysql8 设置不区分大小写
  • Audio Siganl (MATLAB) 代码学习—常见问题3
  • 【PTA题目】7-8 矩阵运算 分数 10
  • Ubuntu20.04创建并挂在zfs池
  • x的平方根算法(leetcode第69题)
  • 打破空间限制,畅享真实生活
  • Python基础期末复习 新手 2
  • Java接入ChatGPT接口简单示例