Kotlin 中 Delegates 的妙用

常规代码实现

项目中有一个 RecyclerView 列表的单选功能,于是我们可以凭借经验写出下面的代码:

1
2
3
4
5
6
7
8
9
10
11
private var lastPos = 0
private var currentPos = 0

fun setCurrentSelected(position: Int) {
if (currentPos != position) {
lastPos = currentPos
currentPos = position
notifyItemChanged(lastPos)
notifyItemChanged(currentPos)
}
}

然后我们使用的时候这样调用:

1
setCurrentSelected(1)

使用 kotlin 语法糖

我们都知道 kotlin 是一门现代、简洁、安全的编程语言。那么,我们有没有更简洁的写法呢?当然有,只需要像下面这样写即可:

1
2
3
4
5
6
private var selectedPosition by Delegates.observable(0) { _, oldPos, newPos ->
if (oldPos != newPos) {
notifyItemChanged(oldPos)
notifyItemChanged(newPos)
}
}

使用的时候像下面这样调用即可:

1
selectedPosition = 1

可以看到,比原有的代码简洁了不少~

图片描述

图片描述

图片描述


如果对你有帮助的话,欢迎一键三连+关注哦~


Kotlin 中 Delegates 的妙用
https://blog.funkt.cn/2023/07/22/1682691718793846785/
作者
anjiemo
发布于
2023年7月22日
许可协议
未经作者授权,禁止转载