2016-02-28 89 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")); 
} 
相關問題