Android studio 使用AlertDialog后,无法删除LIstView中的选定项目
我的问题是: 在我的应用程序中,我为我的ListView设置了ChoiceMode(CHOICE_MODE_MULTIPLE_MODE)和MultiChoiceModeListener方法,以允许用户使用上下文菜单删除列表中的项目。我已经在onActionItemClicked方法中添加了以下代码,一切正常:Android studio 使用AlertDialog后,无法删除LIstView中的选定项目,android-studio,android-listview,android-alertdialog,contextmenu,multiple-choice,Android Studio,Android Listview,Android Alertdialog,Contextmenu,Multiple Choice,我的问题是: 在我的应用程序中,我为我的ListView设置了ChoiceMode(CHOICE_MODE_MULTIPLE_MODE)和MultiChoiceModeListener方法,以允许用户使用上下文菜单删除列表中的项目。我已经在onActionItemClicked方法中添加了以下代码,一切正常: @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
//Clear the list of selected item's id when the user exit the context menu bar.
mSelectedItemIdList.clear();
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()){
case R.id.menu_select_delete:
deleteSelectedItem();
mode.finish();
return true;
default:
return false;
}
}
private void deleteSelectedItem(){
int totalRowDeleted = 0;
if (!mSelectedItemIdList.isEmpty()){
for (int i = 0; i < mSelectedItemIdList.size(); i++){
long idInDatabase = mSelectedItemIdList.get(i);
Uri selectedItemUri = ContentUris.withAppendedId(TimeEntry.CONTENT_URI, idInDatabase);
int rowDeleted = getContentResolver().delete(selectedItemUri, null, null);
if (rowDeleted != 0){
totalRowDeleted++;
}
}
}
if (totalRowDeleted == 0){
Toast.makeText(MainActivity.this, getString(R.string.delete_error_message), Toast.LENGTH_SHORT).show();
return;
}
Toast.makeText(MainActivity.this, totalRowDeleted + " " + getString(R.string.delete_success_message), Toast.LENGTH_SHORT).show();
}
应用程序没有崩溃,但是deleteSelectedItem()不再工作了!不知何故,程序无法到达方法内部for循环中的内容。也许我犯了一些简单的错误。有人能帮我吗?我解决了这个问题
每次显示AlertDialog时都会调用onDestroyActionMode()方法。因此,我删除了onDestroyActionMode()中的代码,并添加了删除记录后清除列表的代码
private void deleteSelectedItem(){
int totalRowDeleted = 0;
if (!mSelectedItemIdList.isEmpty()){
for (int i = 0; i < mSelectedItemIdList.size(); i++){
long idInDatabase = mSelectedItemIdList.get(i);
Uri selectedItemUri = ContentUris.withAppendedId(TimeEntry.CONTENT_URI, idInDatabase);
int rowDeleted = getContentResolver().delete(selectedItemUri, null, null);
if (rowDeleted != 0){
totalRowDeleted++;
}
}
}
if (totalRowDeleted == 0){
Toast.makeText(MainActivity.this, getString(R.string.delete_error_message), Toast.LENGTH_SHORT).show();
return;
}
Toast.makeText(MainActivity.this, totalRowDeleted + " " + getString(R.string.delete_success_message), Toast.LENGTH_SHORT).show();
//Clear the list of selected item's id after delete the records.
mSelectedItemIdList.clear();
private void deleteSelectedItem(){
int totalRowDeleted=0;
如果(!mSelectedItemIdList.isEmpty()){
对于(int i=0;i
}
private void deleteSelectedItem(){
int totalRowDeleted = 0;
if (!mSelectedItemIdList.isEmpty()){
for (int i = 0; i < mSelectedItemIdList.size(); i++){
long idInDatabase = mSelectedItemIdList.get(i);
Uri selectedItemUri = ContentUris.withAppendedId(TimeEntry.CONTENT_URI, idInDatabase);
int rowDeleted = getContentResolver().delete(selectedItemUri, null, null);
if (rowDeleted != 0){
totalRowDeleted++;
}
}
}
if (totalRowDeleted == 0){
Toast.makeText(MainActivity.this, getString(R.string.delete_error_message), Toast.LENGTH_SHORT).show();
return;
}
Toast.makeText(MainActivity.this, totalRowDeleted + " " + getString(R.string.delete_success_message), Toast.LENGTH_SHORT).show();
//Clear the list of selected item's id after delete the records.
mSelectedItemIdList.clear();