当我选择了三个项目时,我想清除所选项目,我正在做如下但是没有工作......
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getResources().getText(R.string.escolhaArquivosBaixados));
builder.setMultiChoiceItems(items, selected, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
//
int count = 0;
for(int i = 1; i < selected.length; i++){
//
if (selected[i]){
count++;
}
if (count == 3){
//enter here but nothing happens
((AlertDialog) dialog).getListView().setItemChecked(which, false);
break;
}
}
}
});
答案 0 :(得分:43)
在question中看到Jorgesys的回答我意识到我的代码中缺少的东西,也是更改布尔列表所必需的。
selected[which] = false;
((AlertDialog) dialog).getListView().setItemChecked(which, false);
答案 1 :(得分:1)
数组中的第一个索引是0,而不是1.所以这个:
for(int i = 1; i < selected.length; i++){
//
if (selected[i]){
count++;
}
永远不会检查布尔数组中的第一项。你需要从i == 0开始。我不知道你的列表中有多少项。但如果你只有3个项目那么
if (count == 3){
永远不会是真的,因为它只会检查数组中的最后两个。 这个电话:
((AlertDialog) dialog).getListView().setItemChecked(which, false);
只会在列表中设置1个项目以取消选中。这将是您点击的第3个。所以你点击的前两个将被检查并保持检查。然后,当您单击第三个时,它将被检查一瞬间,然后取消选中它自己。那是你想要做的吗?或者你想取消选中所有3个?你的问题不是很清楚你想要做什么。
答案 2 :(得分:0)
如果您想将多核选项用作单一选项,请使用此代码。
String[] items = new String[]{"Most Funded (high - low)", "Most Funded (low - high)", "Newest first", "Funding Ask"};
boolean selected[] = new boolean[]{false, false, false, true};
private void showDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getResources().getText(R.string.sortby));
builder.setMultiChoiceItems(items, selected, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
//
for (int i = 0; i < selected.length; i++) {
if (i == which) {
selected[i]=true;
((AlertDialog) dialog).getListView().setItemChecked(i, true);
}
else {
selected[i]=false;
((AlertDialog) dialog).getListView().setItemChecked(i, false);
}
}
}
});
builder.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
builder.show();
}
答案 3 :(得分:0)
for (int i = 0; i < visitArray.length; ++i) {
_selections[i] = false;
((AlertDialog) dialog).getListView().setItemChecked(i, false);
}