首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在RecyclerView kotlin的两个不同视图上实现两个OnClickListener?

如何在RecyclerView kotlin的两个不同视图上实现两个OnClickListener?
EN

Stack Overflow用户
提问于 2021-06-11 08:24:28
回答 3查看 58关注 0票数 0

我正在处理一个包含两个视图的RecyclerView项:一个TextView和一个ImagaView。我希望能够同时点击这两个按钮来实现不同的功能。

我该怎么做呢?

这是我的适配器

代码语言:javascript
运行
复制
class AddMeasurementAdapter(private val currentList:MutableList<DressMeasurementModel>, private val listener1: RecyclerClickListener, private val listener2: RecyclerClickListener): RecyclerView.Adapter<AddMeasurementAdapter.CardViewHolder>() {

    //inner class
    inner class CardViewHolder (itemView : View):RecyclerView.ViewHolder(itemView), View.OnClickListener{
        val display:TextView = itemView.findViewById(R.id.measurement_recyclerview_item)
        //Binding the data with the view
        fun  bind(dressMeasurementModel: DressMeasurementModel){
            display.text = "${dressMeasurementModel.measurementName} ${dressMeasurementModel.measurement}"

        }

        init {
            itemView.setOnClickListener(this@CardViewHolder)
        }

        override fun onClick(v: View?) {
            val position: Int = adapterPosition
            if (position != RecyclerView.NO_POSITION) {
                listener1.onItemClick1(position, currentList)

            }

            if (position != RecyclerView.NO_POSITION) {
                listener2.onItemClick2(position, currentList)

            }

        }


    }


    //Creating view
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CardViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.measurement_fragment_recyclerview_items, parent, false)

        return CardViewHolder(view)
    }
    //Binding the view
    override fun onBindViewHolder(holder: CardViewHolder, position: Int) {
        holder.bind(currentList[position])
    }
    //Getting the item cout size
    override fun getItemCount(): Int {
        return currentList.size
    }

}

这是我的界面

代码语言:javascript
运行
复制
interface RecyclerClickListener {
    fun onItemClick1(position: Int, currentList: MutableList<DressMeasurementModel>)
    fun onItemClick2(position: Int, currentList: MutableList<DressMeasurementModel>)
}
EN

Stack Overflow用户

发布于 2021-06-11 11:13:08

可以在createViewHolder中添加监听器,如下所示

代码语言:javascript
运行
复制
//Creating view
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CardViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.measurement_fragment_recyclerview_items, parent, false)
        view.textView.onClick{}
        view.image.onClick{}
        return CardViewHolder(view)
}
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67929902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档