2016-02-28 6 views
2

В моем RecyclerView есть некоторые элементы. Теперь я пытался изменить цвет фона каждого второго элемента, но мой код не работает ... Это мой метод onBindViewHolderИзменение цвета каждого второго элемента в RecyclerView

public void onBindViewHolder(CityViewHolder holder, int position) { 
    String cityName = cityList.get(position); 
    holder.cityTextView.setText(cityName); 

    if (position%2 == 0) { 
     holder.itemView.setBackgroundColor(ContextCompat.getColor(context, R.color.colorLightGrey)); 
    } 
    else { 
     holder.itemView.setBackgroundColor(ContextCompat.getColor(context, R.color.colorGrey)); 
    } 
} 
+1

Что результат вашего кода? Что происходит в настоящее время? –

+0

Я полагаю, что у вас есть реакция на активность в вашем адаптере, попробуйте этот activity.getResources(). GetColor (R.color.colorLightGrey). Все остальные в вашем коде выглядят хорошо –

+0

Какой выход? Добавить скриншот. – Androider

ответ

2

Попробуйте использовать setBackgroundColor метод на корневой зрения вашего RecyclerView одного элемента, а не на itemView. что-то вроде этого:

holder.yourRootView.setBackgroundColor(ContextCompat.getColor(context, R.color.colorLightGrey)); 

Не забудьте найти его первым, в вашем ViewHolder конструктор:

public class CityViewHolder extends RecyclerView.ViewHolder { 

    private FrameLayout yourRootView; 

    public ViewHolder(View v) { 
     super(v); 

     yourRootView = (FrameLayout) v.findViewById(R.id.item_root_view); 
    } 
} 

Вы можете использовать любой тип представления вместо FrameLayout согласно вашему пункту.

1

Делают это, как это вместо (то же самое место, в адаптере):

if (position%2 == 0) { 
    holder.itemView.setBackgroundColor(Color.parseColor("#fafafa")); 
} else { 
    holder.itemView.setBackgroundColor(Color.parseColor("#ffffff")); 
} 
Смежные вопросы