gpt4 book ai didi

android - 将自定义监听器添加到 Kotlin 类的正确方法

转载 作者:行者123 更新时间:2023-12-02 12:34:29 30 4
gpt4 key购买 nike

我是一名 Kotlin 菜鸟(第三天),并试图在我的类里面添加一个听众。

我目前正在使用 lambdas,如下例所示,它们工作正常。

// Declare callback
class Controller {
var onAction = { -> }
}

// Use callback
myController.onAction = {
...
}

不过,我真的很喜欢Android的 Button::setOnClickListener在 Kotlin 代码中使用如下(无需使用 = ):
myButton.setOnClickListener {
awesomeObject.doSomething()
}

这让我想知道:

如何声明我的监听器以便它可以使用 Button::setOnClickListener方法?

什么是最“Kotlinic”(*)的方式?我的或 Button::setOnClickListener方法?

(*) 与 Pythonic 一样 :)

最佳答案

fun setOnAction(block: () -> Unit) { onAction = block }并保留您的 onAction var .

但我认为保留你所拥有的更符合 Kotlin 的习惯。属性通常优于 setter fun s。 Android Button 语法是 Java 代码 SAM 转换的结果。 setOnClickListener最终比 onClickListener = 更简洁只是因为对于后者,监听器是您必须命名的 Java 接口(interface),而不是 Kotlin 函数。写起来真的很冗长:

button.onClickListener = OnClickListener {
//...
}

所以SAM转换更好用。

关于android - 将自定义监听器添加到 Kotlin 类的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62476255/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com