【发布时间】:2019-07-02 09:49:44
【问题描述】:
我创建了一个 Kotlin 移动应用。在我的应用程序中,我使用带有适配器的RecyclerView。
我想更改在我的RecyclerView 中单击的项目的背景颜色,当我单击另一个项目时,颜色将发生变化,并且单击的第一个项目的颜色返回默认颜色。
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val itemCategory: ProductCategoryData = categories[position]
holder.categoryId.text = itemCategory.id.toString()
println(holder.categoryId.text)
println(itemCategory.name?.get("En").toString())
holder.categoryName.text = itemCategory.name?.get("En").toString()
............
holder.itemView.setOnClickListener {
rowindex = position
mListener?.onItemClick(holder.itemView, categories[position])
}
if (rowindex == position) {
holder.itemView.setBackgroundColor(Color.parseColor("#FED07A"))
} else {
holder.itemView.setBackgroundColor(Color.parseColor("#ffffff"))
}
}
我应该在我的代码中进行哪些更改以使其正常运行
【问题讨论】:
-
只是缺少
notifyDataSetChanged,以便通知适配器它需要重新运行onBindViewHolder -
您可以保存最后点击的项目和新点击的项目的索引,然后使用适配器的 notifyItemChanged(itemIndex) 更改项目的背景
标签: android kotlin android-recyclerview