我有一个类型的变量,(position: Int) -> Unit
我想像这样从xml调用方法android:onClick="@{theMethod.invoke(someInt)}
有可能吗,那我该怎么办呢?
我的处理方法如下。您拥有的方法将与该类相对应kotlin.jvm.functions.Function1
。因此,想法是在XML中这样声明:
<data>
<import type="kotlin.jvm.functions.Function1"/>
<import type="kotlin.Unit"/>
<variable
name="theMethod"
type="Function1<Integer, Unit>"/>
</data>
它看起来不漂亮,但是可以用。我们导入所需的内容,然后声明所需类型的绑定变量。请注意,<
在尝试定义通用类型时,该字符是非法的,因此我们使用<
。
现在,它应该易于使用。我这样做:
android:onClick="@{_ -> theMethod.invoke(someInt)}"
的方法签名onClick
要求我们传递一种接收类型为type的参数的方法View
。我对使用它不感兴趣,因此我将其声明为_
传递给的lambda onClick
。然后在lambda中调用我想要的方法。
我一直在努力不将逻辑放在XML中,但是我允许自己使用这些捷径,因为我并不真正将它们视为业务逻辑。
希望能帮助到你。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句