2017-03-21 5 views
1

Ich habe ein Problem mit der Einstellung der Farbe von Ressourcen für ein Element in RecyclerView. Ich habe diese zwei Methoden versucht, aber keine funktioniert. Irgendwelche Ideen was mache ich falsch?Wie kann man die Farbe eines einzelnen Artikels in RecyclerView ändern?

holder.alert.setTextColor(R.color.alertGreen); 
holder.alert.setTextColor(getResources().getColor(R.color.alertGreen)); 
+0

posten Sie Ihre Artikel XMLL hier und Adapterklasse –

+1

'SetTextColor (Color.parseColor ("# 54D66A")); ' –

Antwort

4

Verwenden Sie ContextCompat, um Farbe zu erhalten.

holder.alert.setTextColor(ContextCompat.getColor(context, R.color.alertGreen)); 
+0

Ok, das funktioniert. Vielen Dank ;) – Dominik

1

In onBindViewHolder(RecyclerView.ViewHolder holder, int position) Methode können Sie die aktuelle Elementfarbe ändern:

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
    holder.alert.setTextColor(R.color.alertGreen); 
    holder.alert.setTextColor(getResources().getColor(R.color.alertGreen); 
} 

Und verwenden ContextCompat die Farbe zu erhalten:

ContextCompat.getColor(context, R.color.alertGreen)); 
1

Sie ContextCompact statt getResources() weil diese Methode verwenden sollten ist deprecated.

holder.alert.setTextColor(ContextCompat.getColor(context, R.color.red)); 
1

Um die Farbe für den Einzelpunkt aktualisieren Sie unter Technik folgen,

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

// Green color to set to specific item in the view [By referencing the position you need to handle the view] 
int color1 = ContextCompat.getColor(context, R.color.alertGreen)); 

// Red color to set to remaining Views 
int color2 = ContextCompat.getColor(context, R.color.alertRed)); 

    if (position == 1) { 
     holder.alert.setTextColor(color1); 
    } else { 
     holder.alert.setTextColor(color2); 
    } 
} 
Verwandte Themen