如何引用 kotlin 构造函数中定义的 xml 中的函数?

How to reference a function from xml that is defined in kotlin's constructor?

我尽量避免写额外的行

这个有效

class ViewModel(val clicked: () -> Unit){
    fun click(){
        clicked()
    }
}

但如果可以的话我想这样写

class ViewModel(val clicked: () -> Unit)

Xml 看起来像这样

android:onClick="@{() -> viewModel.click()}"
or
android:onClick="@{() -> viewModel.clicked()}"

编写较短的版本失败,找不到方法 clicked()

我相信有了这个:

class ViewModel(val clicked: () -> Unit)

在您的 xml 中,您必须参考 lambda 的 invoke 方法。

所以像这样:

android:onClick="@{() -> viewModel.clicked.invoke()}"

编辑:或... 你不能只用这个吗?

android:onClick="@{viewModel.clicked}"

直接传递你的 lambda?