package com.tenclouds.loadingadaptersample; import android.content.Context; import android.databinding.DataBindingUtil; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import com.tenclouds.infiniterecyclerview.ItemsLoader; import com.tenclouds.infiniterecyclerview.AbstractInfiniteAdapter; import com.tenclouds.loadingadaptersample.databinding.ViewCardBinding; import io.magicthegathering.javasdk.resource.Card; public class MtgCardsInfiniteAdapter extends AbstractInfiniteAdapter<Card> { private ItemSelectedListener itemSelectedListener; public MtgCardsInfiniteAdapter(Context context, ItemsLoader<Card> itemsLoader, ItemSelectedListener itemSelectedListener) { super(context, R.layout.view_empty, itemsLoader); this.itemSelectedListener = itemSelectedListener; } @Override protected long getRecyclerItemId(int position) { return 0; } @Override protected RecyclerView.ViewHolder createRecyclerItemViewHolder(ViewGroup parent, int viewType) { ViewCardBinding binding = DataBindingUtil.inflate(getInflater(), R.layout.view_card, parent, false); return new CardViewHolder(binding); } @Override protected void bindRecyclerViewHolder(RecyclerView.ViewHolder holder, int position) { final Card item = getItem(position); CardViewHolder cardViewHolder = (CardViewHolder) holder; cardViewHolder.setCard(item); if (itemSelectedListener != null) { cardViewHolder.binding.getRoot().setOnClickListener((View view) -> itemSelectedListener.onItemSelected(item)); } } @Override protected int getRecyclerItemViewType(int position) { return 0; } private class CardViewHolder extends RecyclerView.ViewHolder { private ViewCardBinding binding; public CardViewHolder(ViewCardBinding binding) { super(binding.getRoot()); this.binding = binding; } public void setCard(Card card) { binding.setCard(card); } } public interface ItemSelectedListener { void onItemSelected(Card card); } }