我已经开始在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)}"
提前致谢。
答案 0 :(得分:1)
抱歉,我的意思是将此作为答案添加,而不是评论。
onCheckedChanged()方法声明如下:
void onCheckedChanged(CompoundButton buttonView, boolean isChecked);
任何lambda表达式都必须包含所有参数或不包含任何参数。例如:
android:onCheckedChanged="@{(cb, isChecked) -> presenter.completeChanged(task, isChecked)}"
android:onCheckedChanged="@{() -> presenter.completeChanged(task)}"
您从lambda调用的方法可以是您喜欢的任何方法,因此您不需要使用任何参数。
您可以使用您希望参数的任何变量名称。如果您只提供了一些参数,那么数据绑定将无法确定您想要的参数以及可能丢失的参数。因此,文档中的全部或全部注释。