在listview中加入checkbox,方法是在adapter中建立一个HashMap保存每个checkbox的状态,要实现的功能是控制最多点击5个,点击第6个会提示,别的chekbox也无法点击,怎么做?

解决方案 »

  1.   

    在view的事件处理里计数呗
      

  2.   

    ADP那边加入一个计数器设置CHECK的点击事件,点击判断CHECK计算器+1,否就-1
    当然。。先判断计算器是否SIZE-1...超出就判断CHECK状态是TRUE还是FALSE,只有TRUE菜给取消。。
      

  3.   


    计数我知道怎么做,我根据循环得到的总数,当我点击第六个checkbox时,不管怎么设置chekbox,比如setchecked(false),setclickable(false),setenable(false)都没用,我现在想解决这个问题,当点击第6个chekbox时不能点。
      

  4.   

    listadatpter中的数据集合中加个boolean类型的静态变量,哪个选中了就变成true,取消就变成false
      

  5.   

    不要使用CheckBox,放一个ImageView,点击选中改变图片。定义一个成员变量用来记录点击选中的item,核心代码如下:
    @Override
        public void onItemChildClick(BaseQuickAdapter adapter, View view, BaseViewHolder holder) {
            if (view.getId() == R.id.galleryCheckBox) {
                GalleryItem item = (GalleryItem) adapter.getData().get(holder.getAdapterPosition());
                // 多余十张图片不可选
                if (mItemCounter.size() > 9) {
                    if (item.checkState) {
                        mItemCounter.remove(item);
                        ((ImageView) view).setImageResource(R.drawable.ic_check_white);
                        item.checkState = !item.checkState;
                        return;
                    }
                    ToastUtils.showToastOnce(this, "最多可以选择10张图片");
                    return;
                }
                if (!item.checkState) {
                    mItemCounter.add(item);
                    ((ImageView) view).setImageResource(R.drawable.ic_check_accent);
                } else {
                    mItemCounter.remove(item);
                    ((ImageView) view).setImageResource(R.drawable.ic_check_white);
                }
                item.checkState = !item.checkState;
            }
        }
      

  6.   

    选中数量要用全局变量保存,没到数量直接isSelected.get(position) = !isSelected.get(position);已经选中5个且该项未选中时,直接return
      

  7.   

    我看你是用一个Map<Integer,Boolean>来存状态的,然后你还循环100次查状态值,是要遍历吧, 要是我按你的思路继续写的话,每次点击checkbox之前, 先判断他是要选中,还是要取消选中,取消选中的话没什么说的,直接map.put(position,false),如果是要选中的话,那就得先遍历一遍判断已经选中的数量到没到5个(其实这里有点蠢,正常用一个变量记录一下岂不是美滋滋),遍历的时候还是的定义一个变量,然后有一个为true的就+1,遍历完了如果小于5,就map.put(position,true),大于5的话就提示就行了