Проблема
Я реализовал режим множественного выбора для представления переработчика с использованием внешней библиотеки.Теперь, чтобы убрать элементы из представления переработчика, я реализовал два цикла for.Первый цикл for удаляет элементы из SQLite, а второй цикл удаляет соответствующие представления из адаптера.Однако проблема возникает при удалении видов из адаптера.
for (i in selectedCardItems!!.indices) //selectedCardItems stores selected card position.
{
val index = selectedCardItems!![i]
val noteRowID = listItems!![index] //list items contains references to items in SQLite and is fed to recyclerview.setadapter = myAdapter(context,listitems)
dbHandler!!.deleteNote(noteRowID.noteID!!)
}
for(i in selectedCardItems!!.indices)
{
val index = selectedCardItems!![i]
listItems!!.removeAt(i) //problem starts here, due to mismatched indexes.
adapter!!.notifyItemRemoved(i)
}
if(dbHandler!!.trashedNotesCount() == 0)
{
trashedRecyclerView!!.visibility = View.GONE
emptyTrashImg!!.visibility = View.VISIBLE
emptyTrashMsg!!.visibility = View.VISIBLE
}
selectedCardItems!!.clear() //once all operation is done,remove card positions from this ArrayList.
}
И listitems, и selectedCardPosition имеют тип ArrayList.Я знаю, что как только элемент из ArrayList удаляется из индекса, более высокий индекс элемента индекса автоматически перемещается в более низкий индекс.Какой эффективный способ решить эту проблему?
То, что я пробовал: A BAD Исправление заключается в основном удалить второй цикл for, который удаляет представления, и заменить его наadaptor.notifyDataSetChanged (), который также удаляет удаление анимации.