1.RecyclerViewAdapterBase
public abstract class RecyclerViewAdapterBase<T, V extends View> extends RecyclerView.Adapter<ViewWrapper<V>> {
protected List<T> items = new ArrayList<T>();
@Override
public int getItemCount() {
return items.size();
}
@Override
public final ViewWrapper<V> onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewWrapper<V>(onCreateItemView(parent, viewType));
}
protected abstract V onCreateItemView(ViewGroup parent, int viewType);
// additional methods to manipulate the items
}
2.ViewWrapper
public class ViewWrapper<V extends View> extends RecyclerView.ViewHolder {
private V view;
public ViewWrapper(V itemView) {
super(itemView);
view = itemView;
}
public V getView() {
return view;
}
}
3.ItemView
@EViewGroup(R.layout.item_class_man)
public class ItemView extends LinearLayout {
@ViewById
AppCompatTextView man_class_name;
@ViewById
AppCompatImageView man_class_icon;
Context mContext;
public ManItemView(Context context){
super(context);
this.mContext = context;
}
public void bind(ColumnListBean.RespDataBean bean){
man_class_name.setText(bean.getName());
Glide.with(mContext).load(bean.getTypeIcon()).into(man_class_icon);
}
}
4.Adapter
@EBean
public class ManAdapter extends RecyclerViewAdapterBase<ColumnListBean.RespDataBean, ItemView> {
public void appendList(List<ColumnListBean.RespDataBean> list){
if(!items.containsAll(list)&&list!=null&&list.size()>0){
items.addAll(list);
}
notifyDataSetChanged();
}
@RootContext
Context context;
@Override
protected ManItemView onCreateItemView(ViewGroup parent, int viewType) {
return ManItemView_.build(context);
}
@Override
public void onBindViewHolder(ViewWrapper<ManItemView> viewHolder, int position) {
ManItemView view = viewHolder.getView();
ColumnListBean.RespDataBean listbean = items.get(position);
view.bind(listbean);
}
}