2017-11-22 1 views
0

Ich habe bereits etwas zu sagen, welche Karte ausgewählt ist, aber wenn ich die Hintergrundfarbe der Itemview einstellen möchte, ändert es nicht meine CardView es ändert die Hintergrundfarbe meiner RecyclerView an dieser Stelle.Wie ändert man die Hintergrundfarbe eines Cardview wenn es ausgewählt ist?

//this method is binding the data on the list 
override fun onBindViewHolder(holder: CustomAdapterExercise.ViewHolder, position: Int) { 
    if (holder.itemViewType == typeAdd) { 
     holder.bindAdd(addList[0]) 
    } 
    else{ 
     if(position != exerciseList.size){ 
      holder.bindItems(exerciseList[position]) 
     } 
    } 

    if (selectedPosition == position && position != exerciseList.size) { 
     holder.itemView.setBackgroundColor(Color.parseColor("#000000")) 
    } 
    else { 
     holder.itemView.setBackgroundColor(Color.parseColor("#ffffff")) 
    } 

    holder.itemView.setOnClickListener { 
     selectedPosition = position 
     notifyDataSetChanged() 
    } 
} 

Antwort

0

Okay ich die Antwort selbst gefunden, sondern für alle, die kämpfen, ist, wie ich hier war die Antwort:

if (selectedPosition == position && position != exerciseList.size) { 
     val card_view = holder.itemView.findViewById<CardView>(R.id.boxesExercise) 
     card_view.setCardBackgroundColor(Color.parseColor("#d7263d")) 
    } 
    else { 
     if(exerciseList.size != 0){ 
      val card_view = holder.itemView.findViewById<CardView>(R.id.boxesExercise) 
      if(card_view != null){ 
       card_view.setCardBackgroundColor(Color.parseColor("#0197f6")) 
      } 

     } 

    } 

Sie können die CardView mit der ID durch die holder.itemView finden, da die CardView ist ein Child von holder.itemView.

Ich habe es bei meinen früheren Versuchen falsch gemacht, weil ich versucht habe, die Hintergrundfarbe direkt auf die holder.itemView und nicht auf die CardView zu übertragen.

Hoffe das hilft jemandem!

Verwandte Themen