public class BaseViewHolder extends RecyclerView.ViewHolder {
private SparseArray<View> views = new SparseArray<>();
private Context context;
public BaseViewHolder(@NonNull View itemView, Context context) {
super(itemView);
this.context = context;
}
public BaseViewHolder(@NonNull View itemView) {
super(itemView);
}
public View getView(int viewId) {
View view = views.get(viewId);
if (view == null) {
view = itemView.findViewById(viewId);
views.put(viewId, view);
}
return view;
}
public BaseViewHolder setText(int viewId, CharSequence value) {
View view = getView(viewId);
((TextView) view).setText(value);
return this;
}
public BaseViewHolder setImageByUrl(int viewId, String url) {
if (context!=null){
Glide.with(context).load(url).into((ImageView) getView(viewId));
}
return this;
}
}
public abstract class BaseAdapter<T> extends RecyclerView.Adapter<BaseViewHolder> {
private ArrayList<T> list;
private int layoutid;
public BaseAdapter(ArrayList<T> list, int layoutid) {
this.list = list;
this.layoutid = layoutid;
}
@NonNull
@Override
public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View inflate = LayoutInflater.from(parent.getContext()).inflate(layoutid, null);
return new BaseViewHolder(inflate);
}
@Override
public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
convert(holder,list.get(position));
}
public abstract void convert(BaseViewHolder holder,T item);
@Override
public int getItemCount() {
return list.size();
}
}