从 multiChoiceItems 对话框界面中删除项目不起作用
Removing items from multiChoiceItems dialog interface not working
我正在尝试使用显示使用 multiChoiceItems 的 ArrayList 的对话框。我想检查要删除的项目,单击按钮删除/关闭对话框,并在下次打开对话框时删除项目。
当我调试下面的代码时,我发现我对每个选定的项目都进行了循环,但 none 的项目实际上被删除了。我觉得我在这里遗漏了一些可能非常微不足道的东西,我希望得到一些帮助!
我知道如果我删除多个项目,我必须考虑索引的变化,所以不用担心。在我可以自己删除第一个项目后,我会这样做!
非常感谢!
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Title");
mSelectedItems.clear();
builder.setMultiChoiceItems(myList,null,
new DialogInterface.OnMultiChoiceClickListener(){
@Override
public void onClick(DialogInterface dialog,int which, boolean isChecked){
if (isChecked) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
// Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
});
builder.setPositiveButton("Remove from list", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
for(int i=0;i<mSelectedItems.size();i++){
arrayChoices.remove(mSelectedItems.get(i));
}
myList = arrayChoices.toArray(new CharSequence[arrayChoices.size()]);
}
});
builder.setNegativeButton("End", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
将 mSelectedItems.get(i) 转换为 int 并且成功了。它显示 mSelectedItems.get(i) 在调试中是一个整数,这让我想知道为什么它还没有工作。
我正在尝试使用显示使用 multiChoiceItems 的 ArrayList 的对话框。我想检查要删除的项目,单击按钮删除/关闭对话框,并在下次打开对话框时删除项目。
当我调试下面的代码时,我发现我对每个选定的项目都进行了循环,但 none 的项目实际上被删除了。我觉得我在这里遗漏了一些可能非常微不足道的东西,我希望得到一些帮助!
我知道如果我删除多个项目,我必须考虑索引的变化,所以不用担心。在我可以自己删除第一个项目后,我会这样做!
非常感谢!
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Title");
mSelectedItems.clear();
builder.setMultiChoiceItems(myList,null,
new DialogInterface.OnMultiChoiceClickListener(){
@Override
public void onClick(DialogInterface dialog,int which, boolean isChecked){
if (isChecked) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
// Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
});
builder.setPositiveButton("Remove from list", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
for(int i=0;i<mSelectedItems.size();i++){
arrayChoices.remove(mSelectedItems.get(i));
}
myList = arrayChoices.toArray(new CharSequence[arrayChoices.size()]);
}
});
builder.setNegativeButton("End", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
将 mSelectedItems.get(i) 转换为 int 并且成功了。它显示 mSelectedItems.get(i) 在调试中是一个整数,这让我想知道为什么它还没有工作。