当前位置: 首页 > 知识库问答 >
问题:

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

容学林
2023-03-14

我是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

我在科特林怎么做?我打了这么多的平手,但都没有成功

共有1个答案

申炳
2023-03-14
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)
    }
}

在您的活动中,只需实现click listener

adapter.onItemClick = { pos, view ->  

}
 类似资料:
  • 我刚刚开始用libGDX做原型,以了解它是如何工作的。我想实现一个网格(像象棋游戏),当我点击/触摸网格的一个盒子,这改变了它的形象。 我找到了一个很好的教程,但它只使用键盘监听器,在网络上,我找不到一个很好的例子来阐明这些机制。 我不明白的是:用什么来渲染框(目前我只使用了SpriteBatch和ShapeRenderer)以及如何检测何时哪个框被点击(我认为计算坐标不是一个好方法。我认为最好的

  • 一切正常。但Logcat中显示了一些错误。 E/RecyclerView:未附加适配器;跳过布局 E/RecyclerView:未附加适配器;跳过布局 我的activity代码: 我读过与同一问题有关的其他问题,但都没有帮助。请帮帮我

  • 在ListView上,您可以使用一个快速滚动条,它允许您拖动滚动条,以便轻松滚动到您希望的任何位置(使用fastScrollEnabled属性) 再加上“SectionIndexer”类和一些可选的属性,您可以在使用此滚动条时看到一个漂亮的弹出窗口(此处链接)。 这种东西显示在联系人应用程序上,这样你就可以很容易地滚动到特定的字母。 RecyclerView似乎没有这些。甚至连快速滚动都没有。 如

  • 我有一个从sqlite数据库接收阵列的基本适配器: 并在异步中填充它: 但我不知道如何为每个条目添加图像,请注意,图像位于文件夹中,图像的名称属于每个条目,例如对于条目管理,在/storage/sdcard/pictures/admin_image1中有一个图像。jpg。因此,当我有条目的名称时,我可以将图像绑定到特定条目。 我需要的是如何将图像添加到此适配器,这里我发布了主要活动和适配器代码,抱

  • > 从创建的片段中更新,将新数据设置为adapter,然后调用;但没有奏效。 像其他人一样创建一个新适配器,它对他们起作用,但对我没有任何改变: 在中创建一个更新数据的方法,如下所示: 问题是gridView的布局如下所示: 然后我只是删除了并将作为父布局。

  • 试图弄清楚更新的适配器有什么问题。 在我得到一个新的产品列表后,我尝试: > 从创建的片段中更新,将新数据设置到adapter,然后调用;但没有奏效。 像其他人一样创建一个新适配器,它对他们有效,但对我没有任何改变: 在中创建一个更新数据的方法,如下所示: 然后每当我想要更新数据列表时,我就调用这个方法;但没有奏效。 检查是否可以以任何方式修改recyclerView,并且我尝试至少删除一个项目: