2016-02-28 58 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")); 
} 
相关问题