android - 使用属性 lambda 或在 Kotlin/Android 中为侦听器/回调设置属性 lambda 的函数更好吗
问题描述
以下哪一项是在 Kotlin Android 中创建侦听器/回调的首选方式?我似乎在网上找不到任何信息
var onClickListener: (View) -> Unit
.....
view.onClickListener = {
println("Clicked!")
}
或者
private var onClickListener: (View) -> Unit
fun setOnClickListener(listener: (View) -> Unit) {
this.onClickListener = listener
}
.....
view.setOnClickListener {
println("Clicked!")
}
有什么区别吗?第二个看起来“更干净”,它是 Java Android 中的所有侦听器都转换成的
解决方案
在 Kotlin 中使用第一个;从 Java 调用时,setOnClickListener
无论哪种方式。
第二个不允许您从类外部获取onClickListener
值,因此如果您出于某种原因确实想阻止此类访问,则可以使用它。
这就是 Java Android 中的所有侦听器都转换成的
这就是您在使用 setter 方法而不是 getter 转换私有字段时所得到的。回调或Android(据我所知)没有特殊处理。
但是这种回调在 Java 中通常没有 getter 的原因是你需要更多的代码来编写它,而且它很少有用;在 Kotlin 中,您需要更多代码来省略它。
推荐阅读
- python - Python GUI 连接到 SQL Server 数据库
- java - 如何在本地机器上测试 Azure 托管标识连接?
- php - PHP:提前准备繁重的查询和 API 请求(异步)
- c++ - PCL:过滤点云给定 2 线方程
- youtube-api - Youtube api search.list 和 eventType live 没有给出结果
- c - C中二进制文件的运行长度编码
- javascript - 如果文档已经存在,不想覆盖它
- python - 应用 Ostu 阈值和 Skimage 计算图像感兴趣区域的属性
- android - 如何使用 fcm 发送高级通知?
- hugo - Hugo - 使用带有复杂键的索引来获取数据