android-fragments 如何使用ItemTouchHelper.SimpleCallback将数据从适配器传递到片段

pcrecxhr  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(120)

我有一个RecyclerView,我在那里显示我的数据,我有一个ItemTouchHelper,我滑动删除我的数据。所有的工作都很好,但我要做的是从适配器传递一个变量,以使用它在ItemTouchHelper.SimpleCallbac k的onSwiped方法的片段。有什么想法?
我正在使用Paging 3库显示我的数据。
这就是我所尝试的:
项目触摸助手滑动

class ItemTouchHelperSwipe(private val swipeItemTouchListener: SwipeItemTouchListener): ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT){
     override fun onSwiped(viewHolder:RecyclerView.ViewHolder,direction:Int)  {
        swipeItemTouchListener.onSwiped(viewHolder,direction)    
      }
      //More overrided method...
}

SwipeItemTouchListener接口:

interface SwipeItemTouchListener{
    fun onSwiped(holder:RecyclerView.ViewHolder?,direction:Int)
    //More functions...
}

碎片

class MyFragment : Fragment(),SwipeItemTouchListener{
   override fun onSwiped(holder:RecyclerView.ViewHolder?,direction:Int?){
       //Here is where I want to use the variable from adapter
   }
}

适配器(使用Paging 3库中的PagingDataAdapter)

class MyAdapter : PagingDataAdapter<MyModel, RecyclerView.ViewHolder>(ModelComparator){
    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int){
        val mymodel : MyModel? = getItem(position)
        val mymodelID = mymodel.data.id  //This id is what I want to pass to fragment
    }
}
xbp102n0

xbp102n01#

override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
            val position = viewHolder.absoluteAdapterPosition
            val item = mAdapter.snapshot().items[position]

            // use your item id

        }

相关问题