每个 Recyclerview 项目都有不同的 onClick

发布于 2025-01-13 20:47:29 字数 111 浏览 2 评论 0原文

我正在 Recyclerview 的帮助下制作网格布局,并且我已经以编程方式在网格中添加了四个 Recyclerview 项目,现在我想在单击不同项目时导航到不同的片段。我无法找到任何合适的方法来做到这一点。

I am making a grid layout with the help of Recyclerview and I have already added four Recyclerview items in a grid programmatically and now I want to navigate to different fragments when I click on different items. I am unable to find any appropriate way to do so.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

醉态萌生 2025-01-20 20:47:29

您应该在 adpter 类的 onBindViewHolder 中使用 if 条件,如下所示:

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder.item.setOnClickListener {
        when (position) {
            0 -> {
                //navigate to first fragment}
            }
            1 -> {
                //navigate to second fragment}
            }
            2 -> {
                //navigate to third fragment}
            }
            3 -> {
                //navigate to fourth fragment}
            }
        }
    }
}

You should use if condition in onBindViewHolder of your adpter class as bellow:

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder.item.setOnClickListener {
        when (position) {
            0 -> {
                //navigate to first fragment}
            }
            1 -> {
                //navigate to second fragment}
            }
            2 -> {
                //navigate to third fragment}
            }
            3 -> {
                //navigate to fourth fragment}
            }
        }
    }
}
┼── 2025-01-20 20:47:29

尝试下面的代码

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        holder.textViewName.text = seriesList[position].name
        holder.textViewNameDesc.text = seriesList[position].desc

        holder.textViewName.setOnClickListener {
                            Toast.makeText(context,"clicked",Toast.LENGTH_SHORT).show()
        }


    }

您需要在回收器适配器中添加以上代码

Try below code

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        holder.textViewName.text = seriesList[position].name
        holder.textViewNameDesc.text = seriesList[position].desc

        holder.textViewName.setOnClickListener {
                            Toast.makeText(context,"clicked",Toast.LENGTH_SHORT).show()
        }


    }

You need to add above code in your recycler adapter

蓬勃野心 2025-01-20 20:47:29
override fun onBindViewHolder(holder: StPanelHomeViewHolder, position: Int) {
        val item = dataset[position]
        holder.cardViewNavigation[0].setOnClickListener {
            val action =
                StPanelHomeFragmentDirections.actionStPanelHomeFragmentToStPanelPayFeeFragment()
            holder.view.findNavController().navigate(action)
        }
    }
override fun onBindViewHolder(holder: StPanelHomeViewHolder, position: Int) {
        val item = dataset[position]
        holder.cardViewNavigation[0].setOnClickListener {
            val action =
                StPanelHomeFragmentDirections.actionStPanelHomeFragmentToStPanelPayFeeFragment()
            holder.view.findNavController().navigate(action)
        }
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文