RecyclerView 复用出现 CheckBox 或者 设置背景混乱问题
来源:互联网 发布:js confirm 重写 编辑:程序博客网 时间:2024/05/19 03:46
RecyclerView 复用出现 CheckBox 或者 设置背景混乱问题
由于RecyclerView 与ListView 都使用了复用技术,所以会出现滚动后出现CheckBox选中混乱或者是Item的背景混乱问题。在OnBindViewHolder(...)方法中添加
public class MyShopingCartAdapter extends RecyclerView.Adapter<MyShopingCartAdapter.ViewHoder> { private List<ShopingCart> list; private OnItemListener listener; private Context context; private List<Integer> listCb = new ArrayList<>();//用于记录位置 public void setOnItemListener(OnItemListener onItemListener) { this.listener = onItemListener; } public MyShopingCartAdapter(List<ShopingCart> list, Context context) { this.list = list; Fresco.initialize(context); } @Override public ViewHoder onCreateViewHolder(ViewGroup parent, int viewType) { ViewHoder viewHoder = new ViewHoder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_shoping_cart, parent, false)); return viewHoder; } @Override public void onBindViewHolder(final ViewHoder holder, final int position) { holder.tvTitle.setText(list.get(position).getTitle()); MyFresco.myDownload(holder.imgItem, list.get(position).getImgItem()); holder.tvHorses.setText(list.get(position).getHorses()); holder.tvModel.setText(list.get(position).getModel()); holder.tvPrice.setText(list.get(position).getPrice()); holder.edNumber.setText(list.get(position).getNumber());
/*
在这里进行选中操作
*/ holder.cbShoping.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { if (!listCb.contains(holder.cbShoping.getTag())) { listCb.add(position);//选中时添加 } } else { if (listCb.contains(holder.cbShoping.getTag())) { listCb.remove(position);//没选中时移除 } } } });
/*
初始判断
*/ if (listCb != null) { holder.cbShoping.setChecked(listCb.contains(position) ? true : false); } else { holder.cbShoping.setChecked(false); } } @Override public int getItemCount() { return list.size(); } public class ViewHoder extends RecyclerView.ViewHolder { private TextView tvTitle; private CheckBox cbShoping; private SimpleDraweeView imgItem; private TextView tvHorses, tvModel, tvPrice; private EditText edNumber; private RelativeLayout rlReduce, rlPlus; public ViewHoder(View itemView) { super(itemView); tvTitle = (TextView) itemView.findViewById(R.id.tvTitle); cbShoping = (CheckBox) itemView.findViewById(R.id.cbShoping); imgItem = (SimpleDraweeView) itemView.findViewById(R.id.imgItem); tvHorses = (TextView) itemView.findViewById(R.id.tvHorses); tvModel = (TextView) itemView.findViewById(R.id.tvModel); tvPrice = (TextView) itemView.findViewById(R.id.tvPrice); edNumber = (EditText) itemView.findViewById(R.id.edNumber); rlPlus = (RelativeLayout) itemView.findViewById(R.id.rlPlus); rlReduce = (RelativeLayout) itemView.findViewById(R.id.rlReduce); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (listener != null) { listener.onClick(v, getLayoutPosition(), list.get(getLayoutPosition())); } } }); } } public interface OnItemListener { void onClick(View v, int pos, ShopingCart shopingCart); }}
通过一个List来辅助保存CheckBox的选中状态,把选中的checkBox的position放到List中,在初始化CheckBox的时候来重新设置checkBox的选中状态。在checkBox的CheckedChangedListener 来添加 或者删除 List中保存的选中状态。
0 0
- RecyclerView 复用出现 CheckBox 或者 设置背景混乱问题
- Android中Recyclerview使用9----Recyclerview的条目复用,出现CheckBox或者设置背景混乱问题
- RecyclerView+checkbox滑动导致复用混乱问题的解决方案
- RecyclerView的Item复用出现问题导致排版混乱
- Recycleview checkbox 复用出现混乱解决方法
- Recycleview checkbox 复用出现混乱解决方法
- Recyclerview嵌套edittext,checkbox混乱问题
- ListView,RecyclerView遇CheckBox复用混乱解决方案
- RecyclerView中使用CheckBox出现勾选混乱的解决方案
- RecyclerView中使用CheckBox出现勾选混乱的解决方案
- RecyclerView中使用CheckBox出现勾选混乱的解决方案
- Recyclerview中checkbox的复用问题
- RecyclerView中CheckBox复用问题
- RecyclerView解决CheckBox复用问题
- listview中设置CheckBox引起的混乱问题
- 关于ListView里面,嵌入Checkbox适配器复用导致的Checkbox混乱问题
- RecyclerView中CheckBox显示混乱的解决办法
- 解决RecyclerView复用,导致Item混乱问题,checkbox也类似此做法
- Android 自定义View(手写签名)
- 【Android】RxJava的使用(三)转换——map、flatMap
- VB6 Advanced Filter Function(2)
- Remote Desktop
- 121.After performing a clean shut down of the database instance for maintenance, you mount the datab
- RecyclerView 复用出现 CheckBox 或者 设置背景混乱问题
- interpolator插值器图形生成器,After Effects速率表示转换器
- 342. Power of Four
- hdu 1870 愚人节的礼物
- jQuery length和size()区别总结如下:
- 史上最好的BP算法图解
- cocos2dx 中 CC_DLL解析
- mysql 下 计算 两点 经纬度 之间的距离
- linux qcom LCD framwork