【问题标题】:My adapter in recyclerview change background color of 2 items instead of 1我在 recyclerview 中的适配器更改了 2 个项目而不是 1 个项目的背景颜色
【发布时间】: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


【解决方案1】:

尝试像这样设置颜色:

titulo.setTextColor((Color.parseColor("#343434")))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多