2017-02-20 3 views
1

私はアンドロイドアプリケーションでデータバインディングの作業を開始しました。利用できる適切な材料がないので、リスナーの結合とラムダの表現の概念を正しく理解することができません。私はandroid official documentationを勉強し始めました。この文書では、リスナーバインディングの下に次の行がありますが、それは私にはわかりません。リスナーのバインディングとラムダ式を正しく統合する方法

リスナー・バインディングには、リスナー・パラメータの2つの選択肢があります。メソッドのすべてのパラメータを無視するか、すべてのパラメータを指定することができます。

空のラムダ式とパラメータ化されたラムダ式だけでなく、上記の行を理解するのに役立つ人はいますか?例:

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); 

任意のラムダ式は、すべてのパラメータまたはそれらのどれを取る必要があります。たとえば、次のように

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

あなたはパラメータのいずれかを使用する必要はありませんので、あなたが好きなものにすることができラムダから呼び出す方法。

パラメータに使用する任意の変数名を使用できます。いくつかのパラメータのみを提供した場合、データバインディングは、どのパラメータを必要としているのか、どのパラメータを捨てるのかを把握することはできません。したがって、ドキュメント内の全部または一部のコメント。

関連する問題