安卓,AlertDialog.Builder多选框问题

多选框有一个全选按钮,需要实现的功能是选中全选则所有选项被选中,取消全选则所有选项被取消现在的情况是,选中全选可以将所有选项选中,但是取消全选却不能取消所有选项,代码如下... 多选框有一个全选按钮,需要实现的功能是选中全选则所有选项被选中,取消全选则所有选项被取消
现在的情况是,选中全选可以将所有选项选中,但是取消全选却不能取消所有选项,代码如下
String[] strArr = new String[] { "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "全选" };
boolean[] boolArr = new boolean[strArr.length];

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("多选");
builder.setMultiChoiceItems(strArr, boolArr, new OnMultiChoiceClickListener() {

@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {

if (which == strArr.length - 1) { // 点击全选
for (int i = 0; i < boolArr.length; i++) {
boolArr[i] = isChecked;
}
} else {
boolArr[which] = isChecked;
}
}
});
builder.setPositiveButton("确定", null);
builder.setNegativeButton("取消", null);
builder.create().show();
}
});
}
if (which == strArr.length - 1) { // 点击全选for (int i = 0; i < boolArr.length; i++) {boolArr[i] = isChecked;}}
这段代码我debug看过,现在的情况就是,选中全选按钮,boolArr[]的每一项都是true,取消全选按钮,boolArr[]每一项都是false,按照逻辑,这应该是正确的,但是false的值体现不到界面上
展开
 我来答
睿智的蓝猫
2013-09-25 · TA获得超过394个赞
知道小有建树答主
回答量:478
采纳率:0%
帮助的人:108万
展开全部
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;
}

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式