使用kotlin委托实现ViewBinding懒加载

简介: 使用kotlin委托实现ViewBinding懒加载

继承 Lazy 方式


实现代码

fun <T : ViewBinding> AppCompatActivity.binding(inflate: (LayoutInflater) -> T): Lazy<T> {
    return MainLazy(this, inflate)
}
class MainLazy<T : ViewBinding>(
    val activity: AppCompatActivity,
    val inflate: (LayoutInflater) -> T
) : Lazy<T> {
    var cache: T? = null
    override val value: T
        get() {
            if (cache == null) {
                cache = inflate(activity.layoutInflater)
            }
            return cache!!
        }
    override fun isInitialized(): Boolean = cache != null
}
复制代码


使用方式

val binding: ActivityMainBinding by binding(ActivityMainBinding::inflate)
复制代码


lazy 关键字方式


实现代码

fun <T : ViewBinding> AppCompatActivity.bindingByLazy(inflate: (LayoutInflater) -> T)= lazy {
     inflate(layoutInflater).apply {
    }
}
复制代码


使用方式

val binding: ActivityMainBinding by bindingByLazy(ActivityMainBinding::inflate)
复制代码

git:github.com/ymeddmn/Vie…



相关文章
|
Kotlin
Kotlin | 实现数据类(data)深拷贝
在Kotlin中,data数据类默认的copy方法实现的是浅拷贝,但我们有时候需要实现深拷贝。 在kotlin中,实现就比较容易了。
550 0
Kotlin | 实现数据类(data)深拷贝
|
JSON 安全 Java
Kotlin学历之委托属性
Kotlin学历之委托属性
101 0
Kotlin学历之委托属性
|
Java Kotlin
Kotlin学历之扩展与委托
Kotlin学历之扩展与委托
94 0
Kotlin学历之扩展与委托
|
设计模式 Kotlin
Kotlin设计模式实现之装饰者模式(Decorator)
装饰者模式(Decorator):在不改变对象自身的基础上,动态地给一个对象添加一些额外的职责。与继承相比,装饰者是一种更轻便灵活的做法。若要扩展功能,装饰者提供了比继承更有弹性的替代方法。
154 0
Kotlin设计模式实现之装饰者模式(Decorator)
|
设计模式 算法 Kotlin
Kotlin设计模式实现之策略模式
Kotlin设计模式实现之策略模式
157 0
Kotlin设计模式实现之策略模式
|
Java Android开发 Kotlin
安卓一行代码实现避免按钮重复点击(AOP)java和kotlin都能使用
安卓一行代码实现避免按钮重复点击(AOP)java和kotlin都能使用
744 0
|
存储 Kotlin
数据结构 | 二分搜索树及它的各种操作(kotlin实现)
在开始之前,应该先讲一下什么是二叉树。
100 0
数据结构 | 二分搜索树及它的各种操作(kotlin实现)
|
存储 C语言 Kotlin
重学数据结构-使用Kotlin实现链表及其他扩展
很简单,链表不像数组那样,不需要我们主动扩容,我们只需要类似递归一样,一层套一层即可,即node1持有node2的引用,node2持有node3…,相应的每次插入我们只需要更改头结点即可,当node-x持有的下一个node引用为null时,我们也可以判定,此时为链表尾节点。
226 0
|
算法 Kotlin
数据结构 | 使用Kotlin实现栈与队列
Last In First Out(LIFO) 后进先出 栈也是一种线性数据结构
577 0
|
XML Java API
Jetpack 系列(6)—— ViewBinding 与 Kotlin 委托双剑合璧
Jetpack 系列(6)—— ViewBinding 与 Kotlin 委托双剑合璧
188 0
Jetpack 系列(6)—— ViewBinding 与 Kotlin 委托双剑合璧