To set RecyclerView
adapter using android data binding.
Layout code:
Data part:
<data>
<variable
name="adapter"
type="com.app.adapter.RecyclerViewAdapter" />
</data>
Recyclerview Layout:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:adapter="@{adapter}"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
android:orientation="vertical"/>
Java file: DataBindingAdapters.java
public class DataBindingAdapters {
@BindingAdapter({"adapter"})
public static void setRecyclerViewAdapter(RecyclerView recyclerView,
RecyclerViewAdapter recyclerViewAdapter) {
recyclerView.setAdapter(RecyclerViewAdapter);
}
}
Note:
1. setRecyclerViewAdapter
must be static to avoid this error.
2. In my code RecyclerViewAdapter
is the custom recyclerview adapter.
3. Set LayoutManager
either in code or in layout file, but not in both.(Xml would be preferred when using android data binding)
4. Refer this SO post for queries related to the layout manager like how to set for androidX, orientation, gridview rows, etc.