public class GoodsManageAdapter extends BaseRecyclerAdapter<GoodsManageAdapter.GoodsManageViewHolder> { private List<GoodsManageBean> list; private Context context; private LayoutInflater inflater; private String letter; private OnClickListener onClickListener; private List<Integer> viewTypeList = new ArrayList<>(); public GoodsManageAdapter(Context context, List<GoodsManageBean> list) { this.context = context; this.list = list; inflater = LayoutInflater.from(context); } @Override public GoodsManageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { GoodsManageViewHolder viewHolder = new GoodsManageViewHolder(inflater.inflate(R.layout.adapter_goods_manage, parent, false)); viewHolder.ivGoodsManageChange.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onClickListener.onChangeListener((int) v.getTag()); } }); viewHolder.ivGoodsManageDelete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onClickListener.onDeleteListener((int) v.getTag()); } }); if (viewType == 1) { viewHolder.llTitle.setVisibility(View.VISIBLE); viewHolder.tvGoodsManageTopLine.setVisibility(View.GONE); } else if (viewType == 2) { viewHolder.llTitle.setVisibility(View.VISIBLE); viewHolder.tvGoodsManageTopLine.setVisibility(View.VISIBLE); } else { viewHolder.llTitle.setVisibility(View.GONE); viewHolder.tvGoodsManageTopLine.setVisibility(View.GONE); } return viewHolder; } @Override public int getItemViewType(int position) { GoodsManageBean goodsManageBean = list.get(position); String firstLetter = String.valueOf(Trans2PinYin.trans2PinYin(goodsManageBean.getGoodsName()).charAt(0)).toUpperCase(); if (viewTypeList.size() >= position + 1) { return viewTypeList.get(position); } if (position == 0) { letter = firstLetter; viewTypeList.add(1); return 1; } else if (!letter.equals(firstLetter)) { letter = firstLetter; viewTypeList.add(2); return 2; } else { viewTypeList.add(3); return 3; } } @Override public void onBindViewHolder(GoodsManageViewHolder holder, final int position) { holder.ivGoodsManageChange.setTag(position); holder.ivGoodsManageDelete.setTag(position); GoodsManageBean goodsManageBean = list.get(position); String firstLetter = String.valueOf(Trans2PinYin.trans2PinYin(goodsManageBean.getGoodsName()).charAt(0)).toUpperCase(); holder.tvGoodsManageLetter.setText(firstLetter); holder.tvGoodsManageName.setText(goodsManageBean.getGoodsName()); } public void setOnClickListener(OnClickListener onClickListener) { this.onClickListener = onClickListener; } @Override public int getItemCount() { return list.size(); } public List<GoodsManageBean> getList() { return list; } public void setList(List<GoodsManageBean> list) { viewTypeList.clear(); this.list = list; } public void removeData(int position) { list.remove(position); viewTypeList.clear(); notifyDataSetChanged(); } class GoodsManageViewHolder extends BaseRecyclerAdapter.BaseViewHolder { @BindView(R.id.tv_adapter_goods_manage_letter) TextView tvGoodsManageLetter; @BindView(R.id.tv_adapter_goods_manage_name) TextView tvGoodsManageName; @BindView(R.id.tv_adapter_goods_manage_top_line) TextView tvGoodsManageTopLine; @BindView(R.id.iv_adapter_goods_manage_change) ImageView ivGoodsManageChange; @BindView(R.id.iv_adapter_goods_manage_delete) ImageView ivGoodsManageDelete; @BindView(R.id.ll_adapter_goods_manage_title) LinearLayout llTitle; public GoodsManageViewHolder(View itemView) { super(itemView); } } }
如图,用一个viewTypeList来保存每个Item的类别(每个类别代表不同的布局)
注意:原始的list必须是排序过的,如下:
Collections.sort(goodsInfoBeen);