我已经开始在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调用的方法可以是您喜欢的任何方法,因此您不需要使用任何参数。
您可以为参数使用任何变量名。如果仅提供一些参数,则数据绑定将无法找出您想要的参数以及哪些参数可能会被丢弃。因此,文档中的全部或全部注释。