android kotlin-如何将click listener添加到RecyclerView适配器

android kotlin-如何将click listener添加到RecyclerView适配器,android,kotlin,android-recyclerview,Android,Kotlin,Android Recyclerview,我是kotlin的新手,这是我的适配器代码,它可以找到,我没有问题,现在,我需要为它实现click listener,这是我的代码: class CategoryAdapter(val context: Context,val list: List<CategoryItems>): RecyclerView.Adapter<CategoryAdapter.ViewHolder>() { var typeface: Typeface? = Func.getTypeFace(

我是kotlin的新手,这是我的适配器代码,它可以找到,我没有问题,现在,我需要为它实现click listener,这是我的代码:

class CategoryAdapter(val context: Context,val list: List<CategoryItems>): RecyclerView.Adapter<CategoryAdapter.ViewHolder>() {
var typeface: Typeface? = Func.getTypeFace(context)

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    var catRow=list.get(position)

    holder?.tvTitle.text = catRow.name
    holder?.tvTitle.setTypeface(typeface)
    Glide.with(context).load(Const.BaseUrl+"Opitures/"+  catRow.icon_name).into(holder?.imgCat);
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    val v = LayoutInflater.from(parent?.context).inflate(R.layout.category_item, parent, false)
    return ViewHolder(v);
}

override fun getItemCount(): Int {
    return list.size
}

class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
    val tvTitle = itemView.findViewById<TextView>(R.id.tv_cat_title)
    val imgCat = itemView.findViewById<ImageView>(R.id.img_cat)
}
}
我想添加click listener,我以前在viewholder类中实现click listener


在科特林我怎么做?我已经尝试了很多方法,但都没有成功

@AtifAbbAsi感谢您的回复,代码在onBindViewHolder类的视图上使用clicklistener,我认为这不是一个好方法,它应该在viewHolder类中实现。这不会泄漏内存吗?我相信是的。实现此功能后,它在运行时会崩溃。它将有一个堆栈大小错误。
var onItemClick: ((pos: Int, view: View) -> Unit)? = null

inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
    override fun onClick(v: View) {
        onItemClick?.invoke(adapterPosition, v)
    }
    val tvTitle = itemView.findViewById<TextView>(R.id.tv_cat_title)

    init {
        itemView.setOnClickListener(this)
    }
}
adapter.onItemClick = { pos, view ->  

}