アンドリュースデータバインディング(2)イベントハンドラ

Androidのデータバインド(a)の基本的な使い方 
Androidのデータバインディング(2)イベント処理(紙) 
Androidのデータバインド(3)観測可能な 
Androidのデータバインド(d)のカスタム属性を 
Androidのデータバインディングを(5)バインディングカスタムビューの道 
のAndroidデータバインディングを(6)のEditTextネクタイTextChangedListenerとFocusChangeListener与えられました

データバインディングイベント処理は2つの方法があります 
。1.メソッドリファレンス 
2.リスナーバインディングは、

メソッドの参照

典型的には、ハンドラまたはプレゼンタークラスと定義メソッドのシグネチャと同様に、リスナーは、XMLコールを定義します。

public class MyHandlers {
    public void onClick(View view) { ... }
}
<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{user.firstName}"
    android:onClick="@{handlers::onClick}"/>

リスナーは、バインディング

結合リスナーはラムダの形をとり、同様の方法を引用したが、またはパラメータラムダメソッドを呼び出し、この方法は、元のリスナーの署名に追従する必要がないかどうか。

public class Presenter {
    public void onClick(Task task){}
}
<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{user.firstName}"
    android:onClick="@{() -> presenter.onClick(viewModel)}"/>

任意のメソッドシグネチャの制限が存在しない場合は、次の2つが考え言葉遣いです

android:onClick="@{(view) -> presenter.onClick(viewModel)}"
public class Presenter {
    public void onClick(View view, Task task){}
}

android:onClick="@{(view) -> presenter.onClick(view, viewModel)}"

チェックボックスのもう一つの例

<CheckBox 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:onCheckedChanged="@{(cb, isChecked) -> 
    presenter.completeChanged(viewModel, isChecked)}" />

あなたが状況下で3ゴール条件式(?:) 1つのだけのイベント処理を使用した場合は、別のイベント処理は¥に、ボイドを置き換えることができます

android:onClick="@{(v) -> v.isVisible() ? doSomething() : void}"
公開された24元の記事 ウォンの賞賛5 ビュー20000 +

おすすめ

転載: blog.csdn.net/qq_26923265/article/details/82627319