당신은이 두 기사에 관심이있을 수 있습니다에
RecyclerView와 데이터 바인딩을 사용 : https://medium.com/google-developers/android-data-binding-list-tricks-ef3d5630555e
으로 : RecyclerView (예를 들어있는 LinearLayout)없이리스트와 데이터 바인딩을 사용하여 https://medium.com/google-developers/android-data-binding-recyclerview-db7c40d9f0e4
ItemDecoration에서는 RecyclerView가 여러 항목 장식을 허용하므로 사용자 고유의 BindingAdapter를 추가해야합니다. 이 같은 것이 작동해야합니다.
@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에 대한 약간의 혼란이 있습니다. 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