我的目标是让用户在 recyclerview 中滑动并从 recyclerview 和 firestore 中删除元素。为此,我使用了 itemtouchhelper 并在片段中创建了一个回调对象。问题是我收到错误“java.lang.IndexOutOfBoundsException: Index: 0, Size: 0”并且我使用“val position=viewHolder.bindingAdapterPosition”作为位置。我自己随机创建了firebase的文档id。
我按如下方式删除文档。问题是,如果我滚动顶部元素,底部元素似乎会随之滑动,但只有滚动条会从 firestore 中删除。即使我滚动底部元素,我也会收到错误“java.lang.IndexOutOfBoundsException:索引:1,大小:1”。我不明白我是否错过了这个职位。你能帮帮我吗?
val swipeToDeleteCallback =object : SwipeToDeleteCallback()
{
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
val position=viewHolder.bindingAdapterPosition
firestore.collection("Foods").document(foodList[position].docId).delete()
.addOnSuccessListener {
foodList.removeAt(position)
feedAdapter.notifyItemRemoved(position)
Toast.makeText(requireContext(),"Deleted",Toast.LENGTH_LONG).show()
}
.addOnFailureListener {
Toast.makeText(requireContext(),it.localizedMessage,Toast.LENGTH_LONG).show()
}
}
}
val itemTouchHelper =ItemTouchHelper(swipeToDeleteCallback)
itemTouchHelper.attachToRecyclerView(binding.recyclerView)
abstract class SwipeToDeleteCallback : ItemTouchHelper.Callback() {
override fun getMovementFlags(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder
): Int {
val swipeFlag=ItemTouchHelper.LEFT
return makeMovementFlags(0,swipeFlag)
}
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
return false
}
}