当我长按列表视图中的任何项目时,会显示上下文操作栏。现在我想要的是,当我在选择项目后按下删除按钮时,所选项目会被删除,但我无法获得所选项目的位置。我的多选模式代码是:
listViewMessages.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listViewMessages.setMultiChoiceModeListener(new MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
mode.setTitle(listViewMessages.getCheckedItemCount()+ " Selected");
}
@Override
public boolean onActionItemClicked(final ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.menu:
deleteScreenedMessageFromInbox();
mode.finish();
return true;
default:
return false;
}
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// Inflate the menu for the CAB
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.contextual, menu);
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
});
当我单击删除按钮时,此方法正在调用:
deleteScreenedMessageFromInbox();
我必须在此方法中传递一个参数,即所选项目的位置。此方法的代码是:
public void deleteScreenedMessageFromInbox(Integer position) {
Integer id = smsIDs.get(position);
String deleteScreenedMessage = "delete from " + "sms" + " where " + "id" + " = " + id;
DBsms smsDb = new DBsms(this);
SQLiteDatabase dbw = smsDb.getWritableDatabase();
dbw.execSQL(deleteScreenedMessage);
dbw.close();
有什么解决方案吗?