【发布时间】:2020-12-27 07:36:55
【问题描述】:
我在 recyclerview 中有 10 件这样的物品。我的问题是,当我单击一个项目时,我更改了背景颜色,但由于某种原因,另一个项目也更改了其背景颜色。我不知道为什么会这样。
例如,如果我单击第一个项目并更改颜色,则位置 8 的项目也会更改其颜色。我只希望我点击的项目改变它的颜色。
这是我的代码:
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
val titulo = holder.itemView.findViewById(R.id.txt_categoria) as TextView
titulo.text = categories[position].name_category!!
holder.itemView.setOnClickListener{
when{
textView == null ->{
textView = holder.itemView.txt_categoria
textView!!.setBackgroundResource(R.drawable.design_categories_project)
textView!!.setTextColor(Color.WHITE)
fragmentProyectos.filterProjects(categories[position].id_categorie!!,
categories[position].name_category!!)
}
posClicked != position ->{
holder.itemView.txt_categoria.setBackgroundResource(R.drawable.design_categories_project)
holder.itemView.txt_categoria.setTextColor(Color.WHITE)
textView!!.setBackgroundResource(R.drawable.design_categories_project_white)
textView!!.setTextColor((Color.parseColor("#343434")))
textView = holder.itemView.txt_categoria
fragmentProyectos.filterProjects(categories[position].id_categorie!!,
categories[position].name_category!!)
}
else ->{
textView!!.setBackgroundResource(R.drawable.design_categories_project_white)
textView!!.setTextColor((Color.parseColor("#343434")))
textView = null
fragmentProyectos.getData()
}
}
posClicked = position
}
}
【问题讨论】:
-
您确定第 8 项与第 1 项不同吗?也许有一个混合的位置。为了解决这个问题,您可以用适配器位置替换位置。也许它会起作用。
标签: android android-recyclerview android-adapter android-viewholder