解决方案 »

  1.   

    @Override
    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
        boolean state = false;//用来标识有没有全选,已经全选则为true
        if (which == strArr.length - 1) { // 点击全选
            for (int i = 0; i < boolArr.length; i++) {
                if (state){
                    boolArr[i] = false;
                } else {
                    boolArr[i] = true;
                }
                state = !state;
            }
        } else {
            boolArr[which] = isChecked;
        }
    }onClick()改了一下。主要是这里的逻辑有点不对,还不行的话你就自己调一下,重点关注isChecked是true还是false。
      

  2.   

    我改成if (which == strArr.length - 1) { // 点击全选
    isAllChecked = !isAllChecked;
    for (int i = 0; i < boolArr.length; i++) {
    if (isAllChecked) {
    boolArr[i] = true;
    } else {
    boolArr[i] = false;
    }
    }
    } else {
    boolArr[which] = isChecked;
    }
    boolean isAllChecked是成员变量,还是不行,debug看过,全选是true的时候,boolArr[]的每一项都是true,全选是false的时候,boolArr[]的每一项都是false,但是true的时候,每一个checkbox都会被打钩,而false的时候只有全选的checkbox的钩被去掉了,其他checkbox的钩还在
      

  3.   

    我改成if (which == strArr.length - 1) { // 点击全选
    isAllChecked = !isAllChecked;
    for (int i = 0; i < boolArr.length; i++) {
    if (isAllChecked) {
    boolArr[i] = true;
    } else {
    boolArr[i] = false;
    }
    }
    } else {
    boolArr[which] = isChecked;
    }
    boolean isAllChecked是成员变量,还是不行,debug看过,全选是true的时候,boolArr[]的每一项都是true,全选是false的时候,boolArr[]的每一项都是false,但是true的时候,每一个checkbox都会被打钩,而false的时候只有全选的checkbox的钩被去掉了,其他checkbox的钩还在
    全选的时候不是都打钩了吗? 如果不是的话这里你的逻辑就不该这么写
    if (which == strArr.length - 1) { // 点击全选
                     else {
                                boolArr[which] = isChecked;
                            }
    点击取消所有选项的时候 将设置不选的代码放到全选外面。
      

  4.   

    搞定了
    http://www.eoeandroid.com/forum.php?mod=viewthread&tid=199941&_dsign=ee3d1880
      

  5.   

    for (int i = 0; i < boolArr.length; i++) {
                                boolArr[i] = isChecked;
                            }
    这段代码有误吧,这段代码是点击全部处理的逻辑,但是你这个估计ischecked还是为true
    你这样判断下看看行不
    if(boolArr[strArr.length - 1] ){
         for (int i = 0; i < boolArr.length; i++) {
                                boolArr[i] = true;
                            }}else{
     
         for (int i = 0; i < boolArr.length; i++) {
                                boolArr[i] = false;
                            }}
    ________________________________________________________________________________________________
    c#.net qrcode creator.net barcode