繁体   English   中英

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

[英]How to pass data from adapter to fragment using ItemTouchHelper.SimpleCallback

我有一个RecyclerView来显示我的数据,我有一个ItemTouchHelper可以滑动以删除我的数据。 这一切都很好,但我要做的是从适配器传递一个变量,以便在片段中ItemTouchHelper.SimpleCallbaconSwiped方法中使用它。 任何想法?

我正在使用 Paging 3 库来显示我的数据。

这是我尝试过的:

ItemTouchHelperSwipe

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
    }
}
   override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
                val position = viewHolder.adapterPosition
                val item = yourAdapter.currentList[position]
                
                // use your item id 
                
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM