public abstract class CommandRecyclerAdapter<V> extends RecyclerView.Adapter<RecyclerViewHolder>{
private Context mContext;
private List<V> dataList;
private LayoutInflater layoutInflater;
public CommandRecyclerAdapter(Context mContext, List<V> dataList) {
this.mContext = mContext;
this.dataList = (dataList!=null? dataList:new ArrayList<V>());
layoutInflater = LayoutInflater.from(mContext);
}
@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View inflate = layoutInflater.inflate(getLayoutInflaterId(viewType), parent, false);
RecyclerViewHolder holder = new RecyclerViewHolder(inflate);
return holder;
}
@Override
public void onBindViewHolder(RecyclerViewHolder holder, int position) {
covert(holder,position,dataList.get(position));
}
@Override
public int getItemCount() {
return dataList.size();
}
public abstract void covert(RecyclerViewHolder holder,int position,V items);
public abstract int getLayoutInflaterId(int viewType);
}
public class RecyclerViewHolder extends RecyclerView.ViewHolder {
private SparseArray<View> views;
private View itemView;
public RecyclerViewHolder(View itemView) {
super(itemView);
views = new SparseArray<>();
this.itemView = itemView;
}
public <T extends View> T getView(int layoutId){
View view = views.get(layoutId);
if (view == null) {
view = itemView.findViewById(layoutId);
views.put(layoutId,view);
}
return ((T) view);
}
}