首页 > 解决方案 > 处理项目 ViewHolder 的滑动手势侦听器

问题描述

我想知道为 recyclerView 项目 ViewHolder 定义滑动手势侦听器的正确方法是什么。这是做了什么:

  1. 定义点击监听接口
    interface StockItemViewClickListener {
        fun onItemClick(stock: Stock)
    
        fun onItemLongClick(stock: Stock)
    
        fun onGestureListener(stock: Stock)
    }
  1. 我的活动类实现了上面的接口,然后this在创建回收器适配器时通过

    class MainActivity : AppCompatActivity(), StockItemViewClickListener {
         // some code here ...
    }
  1. 最后,在 ViewHolder 类中做一些事情
    class StockViewHolder(
       private val view: View,
       private val itemClickListener: StockItemViewClickListener
     ) : RecyclerView.ViewHolder(view) {
         view.setOnClickListener {
            stock?.let {
                itemClickListener.onItemClick(it)
            }
        }
          view.setOnLongClickListener {
            stock?.let {
                itemClickListener.onItemLongClick(stock)
            }
            true
        }
        // some other code
    }

定义 onItemClick 和 onItemLongClick 很容易,但我不知道如何处理 ViewHolder 中的手势。我已经阅读了这篇文章https://developer.android.com/training/gestures/detector.html但不确定如何正确地将其应用到我的代码中。任何帮助将不胜感激!伪代码就够了!

标签: androidkotlinandroid-recyclerview

解决方案


您可以使用OnTouchListener来实现您想要的。只需将其添加到itemView您的 ViewHolder 中即可。


推荐阅读