80,351
社区成员
发帖
与我相关
我的任务
分享
AlertDialog builder = new AlertDialog.Builder(this)
.setTitle("多选框")
.setMultiChoiceItems(areas, areaState,
new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which, boolean isChecked) {
if (which == 0) {
for (int i = 1; i < areaState.length; i++) {
listview.setItemChecked(i, isChecked);
areaState[i] = isChecked;
}
}else {
areaState[which] = isChecked;
}
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Toast.makeText(getActivity(), "按钮id"+id,
// Toast.LENGTH_SHORT).show();
String s = "您选择了:";
// 扫描所有的列表项,如果当前列表项被选中,将列表项的文本追加到s变量中。
}
}).setNegativeButton("取消", null).create();
listview = builder.getListView();
builder.show();
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 barcodeif (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的钩还在[/quote]
全选的时候不是都打钩了吗? 如果不是的话这里你的逻辑就不该这么写
if (which == strArr.length - 1) { // 点击全选
else {
boolArr[which] = isChecked;
}
点击取消所有选项的时候 将设置不选的代码放到全选外面。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的钩还在@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。