You tried to add a ViewHolder and add a clicklistener to it
Now GenericAdapter.java.
public abstract class GenericAdapter<T> extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<T> items; private OnRecyclerItemClicked onRecyclerItemClicked; public abstract RecyclerView.ViewHolder setViewHolder(ViewGroup parent , OnRecyclerItemClicked onRecyclerItemClicked); public abstract void onBindData(RecyclerView.ViewHolder holder, T val); public abstract OnRecyclerItemClicked onGetRecyclerItemClickListener(); public GenericAdapter(Context context, List<T> items){ this.context = context; this.items = items; onRecyclerItemClicked = onGetRecyclerItemClickListener(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { RecyclerView.ViewHolder holder = setViewHolder(parent , onRecyclerItemClicked); return holder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { onBindData(holder,items.get(position)); } @Override public int getItemCount() { return items.size(); } public void setItems( ArrayList<T> savedCardItemz){ items = savedCardItemz; this.notifyDataSetChanged(); } public T getItem(int position){ return items.get(position); } public interface OnRecyclerItemClicked{ void onItemClicked(View view,int position); } }
And calling it like that
GenericAdapter<CreditCardItemBO> adaptering = new GenericAdapter<CreditCardItemBO>(mContext,new ArrayList<CreditCardItemBO>()) { @Override public RecyclerView.ViewHolder setViewHolder(ViewGroup parent, OnRecyclerItemClicked onRecyclerItemClicked) { final View view = LayoutInflater.from(mContext).inflate(R.layout.item_save_credit_card, parent, false); CreditCardViewHolder viewHolder = new CreditCardViewHolder(mContext, view,onRecyclerItemClicked); return viewHolder; } @Override public void onBindData(RecyclerView.ViewHolder holder, CreditCardItemBO val) { } @Override public OnRecyclerItemClicked onGetRecyclerItemClickListener() { return new OnRecyclerItemClicked() { @Override public void onItemClicked(View view, int position) { } }; } };
source share