2017-02-20 107 views
1

我已經開始在android應用程序中處理數據綁定。由於沒有適當的材料可用,所以我無法正確理解監聽器綁定和lambda表達式概念。我開始研究android official documentation。在本文檔中,我找到了Listener Bindings下面的行,這對我來說不是很清楚。如何正確集成監聽器綁定和Lambda表達式

監聽器綁定爲偵聽器參數提供了兩種選擇:您可以忽略該方法的所有參數或命名所有參數。

任何人都可以幫助我理解上面的行以及空的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

它描述了你如何描述你的lambda表達式。 –

回答

1

對不起,我的意思是添加這個答案,而不是評論。

的onCheckedChanged()方法被聲明如下:

void onCheckedChanged(CompoundButton buttonView, boolean isChecked); 

任何lambda表達式必須採取所有的參數或沒有。例如:

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

您從拉姆達調用可以是任何你喜歡的,所以你不需要使用任何參數的方法。

您可以使用任何您想要的參數的變量名稱。如果您僅提供了一些參數,數據綁定將無法找出您想要的參數以及可能丟棄的參數。因此,文檔中的全或無評論。