package com.ydl.ydlcommon.adapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.util.SparseArray; import android.view.View; import java.util.List; /** * Created by Wi1ls on 2016/10/13; */ public abstract class MyBaseAdapter<T> extends RecyclerView.Adapter<MyBaseAdapter.MyViewHolder> { protected Context context; protected List<T> data; protected OnItemClickListener onItemClickListener; public interface OnItemClickListener<T> { void onItemClickListener(View v, int position, T data); } public void setOnItemClickListener(OnItemClickListener listener) { this.onItemClickListener = listener; } public MyBaseAdapter(Context context, List<T> data) { this.context = context; this.data = data; } public MyBaseAdapter(Context context, List<T> data, OnItemClickListener listener) { this(context, data); this.onItemClickListener = listener; } protected static final class MyViewHolder extends RecyclerView.ViewHolder { private SparseArray<View> sparseArray = new SparseArray<>(); public SparseArray<View> getSparseArray() { return sparseArray; } public MyViewHolder(View itemView, int... ids) { super(itemView); for (int i = 0; i < ids.length; i++) { sparseArray.append(ids[i], getView(ids[i])); } } private <Q extends View> Q getView(int id) { return (Q) itemView.findViewById(id); } } protected <Q extends View> Q getView(MyViewHolder viewHolder, int id) { return (Q) viewHolder.getSparseArray().get(id); } public void setData(List<T> data){ this.data=data; notifyDataSetChanged(); } }