あなたはこれら二つの記事に興味があるかもしれません:RecyclerViewでデータバインディングを使用した上で
: https://medium.com/google-developers/android-data-binding-recyclerview-db7c40d9f0e4
RecyclerViewせずにリストをデータバインディングを使用した上で(例のLinearLayout): https://medium.com/google-developers/android-data-binding-list-tricks-ef3d5630555e
付きItemDecorationでは、独自のBindingAdapterを追加する必要があります。これは、RecyclerViewが複数のアイテムの装飾を許可するためです。このようなものはうまくいくはずです:
@BindingAdapter("itemDecoration")
public static void setItemDecoration(RecyclerView view, ItemDecoration old,
ItemDecoration newVal) {
if (old != null) {
view.removeItemDecoration(old);
}
if (newVal != null) {
view.addItemDecoration(newVal);
}
}
Contextに関するご質問はちょっと混乱します。私はあなたがデータバインディングでどのようにコンテキストを必要とするか想像しようとしています。データバインディング式ではnew
が許可されていないため、そのように作成することはできません。
@BindingAdapter("dividerDirection")
public static void setItemDecoration(RecyclerView view, int oldDirection, int newDirection) {
if (oldDirection != newDirection) {
ItemDecoration decoration =
new DividerItemDecoration(view.getContext(), newDirection);
ItemDecoration old = ListenerUtil.trackListener(view, decoration, R.id.decoration);
if (old != null) {
view.removeItemDecoration(old);
}
view.addItemDecoration(decoration);
}
}
、それは次のようにバインドされます:おそらく、あなたの代わりに、いくつかの表現を使用して考えている他の用途のために
<android.support.v7.widget.RecyclerView
app:dividerDirection="@{DividerItemDecoration.HORIZONTAL}" .../>
、あなたは自動的に内蔵の「コンテキスト」変数を付与されていますあなたのレイアウトとあなたはあなたが呼び出す方法にそれを渡すことができます。これは、バインドされたビュー階層のルートビューのコンテキストであり、ほとんどのニーズに対応する必要があります。ほとんどの用途では、モデルのコンテキストを渡す必要はありません。
<android.support.v7.widget.RecyclerView
app:itemAnimator="@{model.animator}" .../>
をなぜあなたは 'コンテキストを渡す必要があります:
は、私はそれがすでにセッターを持っているので、あなたが属性を使用するために特別なBindingAdapterは必要ありませんが、それはまたItemAnimatorについてのご質問に答える必要があります期待します'RecyclerView'を使うときは? – pskink
あなたの質問は非常に一般的です。答えるためにエッセイ全体を必要としないように少しだけ指定することはできますか? – tynn
[This](http://saulmm.github.io/from-design-to-android-part1)は、単純なバインディング以上のものを扱う例です。それは 'ViewFlipper'を持っています。 – yennsarah