如何访问回收站视图中的按钮?

Posted

技术标签:

【中文标题】如何访问回收站视图中的按钮?【英文标题】:How to I access button inside a recycler view? 【发布时间】:2020-09-05 13:31:15 【问题描述】:

这是我的 RecyclerView 适配器

class RecyclerAdapter(private val recyclerList: List): RecyclerView.Adapter()

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): mainRecyclerViewHolder 
    val itemView = LayoutInflater.from(parent.context).inflate(R.layout.quiz_item_recycler_view,
        parent, false)

    return mainRecyclerViewHolder(itemView)


override fun getItemCount() = recyclerList.size

override fun onBindViewHolder(holder: mainRecyclerViewHolder, position: Int) 

    val currentItem = recyclerList[position]
    holder.imageView.setImageResource(currentItem.imageResource)
    holder.textView.text = currentItem.recyclerCardText




class mainRecyclerViewHolder(itemView: View): RecyclerView.ViewHolder(itemView)

    val imageView: ImageView = itemView.rec_image
    val textView: TextView = itemView.text_view_1







这是我的数据类

数据类 RecyclerItemMain(val imageResource: Int, val recyclerCardText: String, val button: Button)

【问题讨论】:

你在说什么按钮?你的 R.layout.quiz_item_recycler_view 布局中有 ine 吗?还是你还有什么想说的? 我有一个回收站视图,里面有一个按钮 我如何为 Recyclerview 中的每个按钮设置一个 onclicklistener?以便每个按钮启动不同的活动 请相应地更新问题。同时添加 Viewholder 的 xml 文件 【参考方案1】:

像这样:

override fun onBindViewHolder(holder: CustomViewHolder, position: Int) 

        holder.yourButton.setOnClickListener  v ->

            // Here your start your other activity or navigate to another fragment
        
    

请记住,如果您打算根据按钮将用户发送到不同的活动,则必须创建一个 when 表达式,它将根据 recyclerItem 中的另一个值将用户发送到活动,例如文本该项目,在你的情况下currentItem.recyclerCardText

这是你的完整适配器,重新组织:

class RecyclerAdapter(recyclerList: List<CategorySectionIcon>) :
    RecyclerView.Adapter<YourAdapter.CustomViewHolder>() 

    private var recyclerList: List<CategorySectionIcon>? = recyclerList


    inner class CustomViewHolder(
        //Get a reference to the Views in our layout//

        val myView: View
    ) : RecyclerView.ViewHolder(myView) 

        var textView: TextView = myView.findViewById(R.id.your_text)
        var imageView: ImageView = myView.findViewById(R.id.your_image)
        var yourButton: Button = myView.findViewById(R.id.iv_category_imagen_icon)

    

    override//Construct a RecyclerView.ViewHolder//
    fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomViewHolder 
        val layoutInflater = LayoutInflater.from(parent.context)
        val itemView =
            layoutInflater.inflate(R.layout.quiz_item_recycler_view, parent, false)
        return CustomViewHolder(itemView)
    

    override fun onBindViewHolder(holder: CustomViewHolder, position: Int) 

        holder.textView.text = recyclerList!![position].recyclerCardText
        holder.imageView.setImageResource(recyclerList!![position].image)

        holder.yourButton.setOnClickListener  v ->

            // Here your start your other activity or navigate to another fragment
        
    

    //Calculate the item count for the RecylerView//
    override fun getItemCount(): Int 
        return recyclerList!!.size
    

【讨论】:

以上是关于如何访问回收站视图中的按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 android 中的回收器视图运行 for 循环?

显示更多/查看回收站视图中的所有项目 [关闭]

如何将页脚按钮添加到我的回收站视图

如何解决单击水平 RecyclerView 中的项目的问题?

如何在主要活动中使用按钮 onclicklistener 进行回收视图项目

长按回收站视图项目时显示按钮