滑动以使用 recyclerview 从 Firebase 中删除

问题描述 投票:0回答:0

我的目标是让用户在 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
    }

}
firebase kotlin google-cloud-firestore swipe itemtouchhelper
© www.soinside.com 2019 - 2024. All rights reserved.