Data binding in RecyclerView Adapter
suggest changeIt’s also possible to use data binding within your RecyclerView
Adapter.
Data model
public class Item {
private String name;
public String getName() { return name; }
}
XML Layout
<TextView
android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=”@{item.name}”/>
Adapter class
public class ListItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Activity host; private List items;
public ListItemAdapter(Activity activity, List items) { this.host = activity; this.items = items; }
@Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // inflate layout and retrieve binding ListItemBinding binding = DataBindingUtil.inflate(host.getLayoutInflater(), R.layout.list_item, parent, false);
return new ItemViewHolder(binding);
}
@Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { Item item = items.get(position);
ItemViewHolder itemViewHolder = (ItemViewHolder)holder;
itemViewHolder.bindItem(item);
}
@Override public int getItemCount() { return items.size(); }
private static class ItemViewHolder extends RecyclerView.ViewHolder { ListItemBinding binding;
ItemViewHolder(ListItemBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
void bindItem(Item item) {
binding.setItem(item);
binding.executePendingBindings();
}
}
}