У меня есть ListView с ArrayAdapter.Как обновить ключевые значения SparseBooleanArray при удалении нескольких элементов из списка в Android
Я выбираю несколько элементов, и я пытаюсь удалить их из базы данных и ListView.
Я вложу удалить в контекстном меню режима действия и удаляют, как показано ниже:
if(item.getItemId() == R.id.action_delete)
{
SparseBooleanArray selected = adapter.getSelectedIds();
short size = (short)selected.size();
for (byte I = 0; I<size; I++)
{
if (selected.valueAt(I))
{
Contact selectedItem = adapter.getItem(selected.keyAt(I));
boolean number = mHelper.deleteCont(myList.get(selected.keyAt(I)).getId());
adapter.remove(selectedItem);
adapter.notifyDataSetChanged();
}
}
// Close CAB (Contextual Action Bar)
mode.finish();
}
НО, если я выбрал 3 ListView элементов, чтобы удалить с одной разницей позиции среди них затем клавишу из SparseBooleanArray (который является позицией элемента) НЕ соответствует действительному элементу.
Как я собираюсь поместить в ключи SparseBooleanArray уникальный идентификатор, поступающий из базы данных?
SparseBooleanArray адаптер является следующее:
public void toggleSelection(int position) {
selectView(position, !mSelectedItemsIds.get(position));
}
public void selectView(int position, boolean value) {
if (value)
mSelectedItemsIds.put(position, value);
else
mSelectedItemsIds.delete(position);
notifyDataSetChanged();
}
public SparseBooleanArray getSelectedIds() {
return mSelectedItemsIds;
}
Использование реальных идентификаторов ... не позиция – Selvin