Когда я долгое время нажимаю любой элемент в представлении списка, отображается панель контекстного действия. Теперь, что я хочу, когда я нажимаю кнопку удаления после выбора элементов, тогда выбранные элементы удаляются, но я не могу получить позицию выбранных элементов. Моего кода для режима мульти выбора:Получить позицию выбранного элемента в режиме действия
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();
любые решения для этого?
Вы можете держать 'ArrayList' вне 'MultiChoiceModeListener' и' add' элемент или 'remove' элемент из 'ArrayList' изнутри' onItemCheckedStateChanged' в зависимости от того, является ли 'boolean checked 'истинным или ложным соответственно. Дайте мне знать, если вы хотите, чтобы я расширил это в ответ. –
Да, пожалуйста, предоставьте мне пример кода, так как я немного запутался –
Я внесла некоторые изменения в ваш существующий код и опубликовал это как ответ. Пожалуйста, проверьте. –