Androidのデータバインド()基本的な使い方
Androidのデータバインディング(2)イベントハンドラ
Androidのデータバインディング(3)観測可能な
Androidのデータバインド(d)のカスタムプロパティ(紙)
Androidのデータバインド(5)バインディングカスタムビューの道
のAndroidデータバインディング(6)のEditTextネクタイTextChangedListenerとFocusChangeListener与えられました
序文
ビュー、setXXXメソッドを呼び出したときに、データバインディング。例えば、以下のコードは
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.name}" />
時間のsetText(String型のテキスト)メソッドを呼び出して、結合しました。
TextViewがのsetText(文字列テキスト)法、無SetTextメソッド、またはメソッドSetTextメソッドシグネチャを持っていることを提供することは、十分ではない、同じではありません。
だから、すべてのプロパティはデータバインディングで設定することができません。
方法がない場合には、2つの方法があります
同様の方法であるが、この方法は、同じ名前またはメソッドのシグネチャでない場合は1、既存の方法を設定することによって呼び出すことができます。
たとえば、アンドロイド:onClickの、ビューはsetOnClick方法はありませんが、setOnClickListener方法があり、およびメソッドのシグネチャは同じです。
今回はトランジットするBindingMethodを使用することができます。
@BindingMethods({
@BindingMethod(type = View.class, attribute = "android:onClick", method = "setOnClickListener")
})
@BindingMethodsそれにクラス名を定義します。
あなただけのセッターの名前を変更したい場合はもちろん、それはまた、@BindingMethodsによって達成することができます。
たとえば、アンドロイド:paddingLeft、ビューは、唯一の方法をsetPadding、setPaddingLeft方法ではありません。
今度は、カスタムメソッドを設定し、上記の方法で@BindingAdapter追加することができます。
@BindingAdapter("android:paddingLeft")
public static void setPaddingLeft(View view, int padding) {
view.setPadding(padding,
view.getPaddingTop(),
view.getPaddingRight(),
view.getPaddingBottom());
}
2.いいえ同様に、対応するメソッドを追加します。
例えば、アプリ:XXX属性
メソッドのシグネチャは、アプリケーションである場合:セット内XXX財産価値、この方法はのsetXXX直接定義することができます。
自分自身を着信上記のようsetPaddingLeftのようなメソッドのシグネチャも表示する必要がある場合には、setXXXメソッドの定義に加えて、あなたは@BindingAdapter追加する必要があります(「アンドロイド:XXX」)を
データバインディングライブラリは、カスタム属性の数を提供します
幸い、このよう上記のアンドロイドのようないくつかの共通の属性、:のonClickとAndroidは:paddingLeft、ライブラリを使用すると、設定で直接使用する必要はありません、あなたはセットアップを支援する必要があります。(具体android.databinding.adapters.ViewBindingAdapter参照)
マルチ属性バインディング
同じ方法は、複数の属性を同時に提供することができます
@BindingAdapter({"bind:imageUrl", "bind:error"})
public static void loadImage(ImageView view, String url, Drawable error) {
Picasso.with(view.getContext()).load(url).error(error).into(view);
}
ピカソは、画像IMAGEURLとエラーを読み込む必要があります。同時に、定義が不可欠と呼ばれていたとき。
彼が呼び出したときに、そしてちょうどOKにrequireAll =偽を追加した1で定義されている場合は、上記の例では、それが呼び出す同時に設定されています。
@BindingAdapter(value = {"android:onViewDetachedFromWindow", "android:onViewAttachedToWindow"},
requireAll = false)
public static void setOnAttachStateChangeListener(View view,
final OnViewDetachedFromWindow detach, final OnViewAttachedToWindow attach) {
}
アンドロイドでsetOnAttachStateChangeListener:onViewDetachedFromWindowやアンドロイド:ときコールを呼び出し1 onViewAttachedToWindow。