Data binding in RecyclerView Adapter

suggest change

It’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


android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=”@{}”/>

Adapter class

public class ListItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

private Activity host; private List items;

public ListItemAdapter(Activity activity, List items) { = 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;


@Override public int getItemCount() { return items.size(); }

private static class ItemViewHolder extends RecyclerView.ViewHolder { ListItemBinding binding;

ItemViewHolder(ListItemBinding binding) {
    this.binding = binding;

void bindItem(Item item) {



Feedback about page:

Optional: your email if you want me to get back to you:

Table Of Contents