Мой адаптер в recyclerview меняет цвет фона 2 элементов вместо 1

У меня есть 10 таких элементов в recyclerview. Моя проблема заключается в том, что когда я нажимаю на один элемент, я меняю цвет фона, но по какой-то причине другой элемент также меняет цвет фона. Я не знаю, почему это происходит.

Например, если я щелкну первый элемент и изменю цвет, элемент в позиции 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
    }
}

person Daniel    schedule 27.12.2020    source источник
comment
Вы уверены, что пункт 8 не совпадает с пунктом 1? Возможно, есть смешанная позиция. Чтобы решить эту проблему, вы можете заменить позицию на позицию адаптера. Может быть, это сработает.   -  person jujuf1    schedule 27.12.2020


Ответы (1)


Попробуйте установить цвет следующим образом:

titulo.setTextColor((Color.parseColor("#343434")))
person Ahmad Faidzal ibrahim    schedule 27.12.2020