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}"