安卓,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的值体现不到界面上 展开
现在的情况是,选中全选可以将所有选项选中,但是取消全选却不能取消所有选项,代码如下
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的值体现不到界面上 展开
1个回答
展开全部
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;
}
}
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;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询