В моей MainActivity у меня есть RecyclerView, для которого я реализовал функцию удаления для удаления:
private val swipeHelper = object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) {
override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
return false
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
val position = viewHolder.adapterPosition //get position which is swipe
if (direction == ItemTouchHelper.LEFT) { //if swipe left
deleteSwipe(position)
} else {
editSwipe(position)
}
}
...
}
и вот так выглядит функция deleteSwipe ():
private fun deleteSwipe(position: Int) {
try {
adapter.removeItem(position)
...
} catch (e: IndexOutOfBoundsException) {}
}
А вот моя removeItem(pos:Int)
функция в адаптере:
fun removeItem(position: Int) {
activeFiltered!!.removeAt(position)
notifyDataSetChanged()
}
обратите внимание, что я специально использовал notifyDataSetChanged()
вместо notifyItemRemoved()
, потому что мне не нужна анимация.
Проблема в том, что независимо от того, какой элемент в списке я пролистываю, тот, который удаляется, всегда является последним. Я отладил переменную позиции, и я ожидаю ее, так что не знаю, где именно ошибка.