gpt4 book ai didi

android - 在 Kotlin 中为 recyclerView 的 child 的 child 设置监听器

转载 作者:行者123 更新时间:2023-11-29 22:35:11 24 4
gpt4 key购买 nike

我有一个 RecyclerView,它的模型中有三个按钮,如何为每个按钮设置监听器?我可以访问 RecyclerView 的 child 并为其设置一个监听器,但我想为 RecyclerView 的一个 child 的一个 child 设置一个监听器。假设我正在使用 Kotlin。

我使用这段代码让您可以访问 recyclerView 的 subview ,但不能访问 RecyclerView 的 subview 的 subview :

fun RecyclerView.addOnItemClickListener(onClickListener: OnItemClickListener) {
this.addOnChildAttachStateChangeListener(object: RecyclerView.OnChildAttachStateChangeListener {
override fun onChildViewDetachedFromWindow(view: View) {
view.setOnClickListener(null)
}
override fun onChildViewAttachedToWindow(view: View) {
view.setOnClickListener {
val holder = getChildViewHolder(view)
onClickListener.onItemClicked(holder.adapterPosition, view)
}
}
})
}

最佳答案

要实现这一点,您必须在 RecyclerView 项目的每个 Button 上设置 OnClickListener。以下面为例

class YourAdapter: RecyclerView.Adapter<YourAdapter.YourViewHolder>(), View.OnClickListener {

//Other code
....

override fun onBindViewHolder(holder: YourAdapter.YourViewHolder, position: Int) {

holder.button1.setOnClickListener(this)
holder.button2.setOnClickListener(this)
holder.button3.setOnClickListener(this)
}

override fun onClick(v: View?) {
when(v?.id) {
R.id.button1 -> {
//Do your operation
}

R.id.button2 -> {
//Do your operation
}

R.id.button3 -> {
//Do your operation
}
}
}

class YourViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
lateinit var button1: Button
lateinit var button2: Button
lateinit var button3: Button
}
}

关于android - 在 Kotlin 中为 recyclerView 的 child 的 child 设置监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59550704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com