【问题标题】:Android Kotlin - setOnTouchListener for RecyclerView and all item child Views / everything insideAndroid Kotlin - 用于 RecyclerView 的 setOnTouchListener 和所有项目子视图/里面的所有内容
【发布时间】:2021-12-25 03:29:37
【问题描述】:

这是代码:

    binding.commentsRecyclerview.setOnTouchListener { view, _ ->
        Log.d(tagg, "touched")
    }

它仅在我不触摸 RecyclerView 项目内的视图时才有效。

那么我怎样才能只包含 RecyclerView 中的所有内容呢?

【问题讨论】:

  • 你需要定义 setOnClickListener insde onBInd() 例如在你的 onBind => holder.setOnClickListener(blaalal);

标签: android android-recyclerview android-view android-touch-event


【解决方案1】:

我真的不明白你是想让整个 recyclerView 视图可点击还是让它的项目可点击。所以我在下面描述了这两种解决方案。

如果您需要为 recyclerView 项目创建触摸侦听器,请执行以下步骤。

第一个案例

  1. 创建界面
    internal interface OnCommentTouchListener{
        fun onClick(comment: Comment, position: Int) //or wherever you want
    }

  1. 在适配器构造函数中需要一个接口实例
class CommentAdapter internal constructor(val onClickListener: OnCommentTouchListener) 
  1. 将其应用于 onBindViewHolder 或 onBind(for ListAdapter) 中的 holder.itemView
       holder.itemView.setOnClickListener {
            onClickListener.onClick(
                comments.get(position),
                position
            )
        }
  1. 在您的 Fragment/Activity 中使用此适配器,并以您想要的方式覆盖侦听器的 onClick。

第二种情况

如果您想让整个 RecyclerView 成为可点击的项目,请尝试制作一个单独的布局,其中仅包含 RecyclerView。例如,FrameLayout 和 RecyclerView。然后包括它 <include layout=... /> 在你的主布局中并给它一个 id。那么你所要做的就是打电话

binding.frameLayoutId.root.setOnClickListener {...} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    相关资源
    最近更新 更多