我已经开始在android应用程序中进行数据绑定。由于没有合适的资料,因此我无法正确理解侦听器绑定和lambda表达概念。我开始学习android official documentation。在本文档中,我在“侦听器绑定”下找到了以下一行,这对我来说并不明确。


  侦听器绑定为侦听器参数提供了两种选择:您可以忽略该方法的所有参数,也可以全部命名。


谁能帮助我了解上述内容以及空的lambda表达式和参数化lambda表达式?例如:

android:onClick="@{(v) -> v.isVisible() ? doSomething() : void}"
android:onClick="@{(theView) -> presenter.onSaveClick(theView, task)}"
android:onCheckedChanged="@{(cb, isChecked) -> presenter.completeChanged(task, isChecked)}"


提前致谢。

最佳答案

抱歉,我想将此添加为答案,而不是评论。

onCheckedChanged()方法的声明如下:

void onCheckedChanged(CompoundButton buttonView, boolean isChecked);


任何lambda表达式都必须使用所有参数或不使用任何参数。例如:

android:onCheckedChanged="@{(cb, isChecked) -> presenter.completeChanged(task, isChecked)}"
android:onCheckedChanged="@{() -> presenter.completeChanged(task)}"


从lambda调用的方法可以是您喜欢的任何方法,因此您不需要使用任何参数。

您可以为参数使用任何变量名。如果仅提供一些参数,则数据绑定将无法找出您想要的参数以及哪些参数可能会被丢弃。因此,文档中的全部或全部注释。

10-07 19:20
查看更多