仅在ViewHolder中单击侦听器有时会作出响应
我有以下一段代码。 下面你可以看到我的视图,适配器和我的XML。 我遇到的问题是点击有时不被执行。 只有当我也设置clicklisteners在我的viewholder textview和imageview比它的工作。 据推测,点击被textview和imageview吃掉。 任何人都知道为什么会出现这种情况。
class GeneralListItemViewHolder(val view: View) : RecyclerView.ViewHolder(view) { var item: GeneralItemViewModel? = null init { view.setOnClickListener { item?.method?.invoke() } } fun bind(item: GeneralItemViewModel) { this.item = item //Do some nice UI things } }
我的xml看起来像这样:
此外我的适配器代码包含以下内容:
class GeneralItemAdapter(val items: List) : RecyclerView.Adapter() { override fun onBindViewHolder(holder: GeneralListItemViewHolder, position: Int) { return holder.bind(getItem(position)) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GeneralListItemViewHolder { val view = parent.inflate(R.layout.general_list_item, false) return GeneralListItemViewHolder(view) } override fun getItemCount(): Int { return items.size } private fun getItem(position: Int): GeneralItemViewModel { return items[position] } }
您必须在绑定方法中设置ClickListener。
实际上,这个问题与在视图上使用合成kotlin扩展有关。 如果你在variables视图而不是itemView上使用它们,那么点击就会被textview所吃掉。
fun bind(item: AboutGeneralItemViewModel) { this.item = item itemView.general_list_item_title.text = item.value itemView.setOnClickListener { item?.method?.invoke() } }
- 伴侣对象隐藏类 – 错误或功能?
- Android注释与Kotlin和生成工具2.3.0
- KMongo序列化的BSONTimestamp
- 在kotlin中,如何传递一个MutableList,其中目标需要一个List
- 你能解释一下有趣的requestByZipCode吗?
- Kotlin JS项目的基本Gradle脚本Kotlin文件是什么样的?
- 简化代码,除了签名以外,是相同的乐趣(可变参数vs地图)
- 协程怎么比线程快?
- Kotlin类型不匹配List <Any>和List <Comparable <{com.cognitect.transit.Symbol&com.cognitect.transit.Keyword}>?>