在RecyclerView中更改每个元素的颜色

时间:2016-02-28 09:57:30

标签: java android android-recyclerview background-color

我的RecyclerView中有一些元素。现在我尝试更改每个元素的背景颜色,但我的代码不起作用......这是我的方法 onBindViewHolder

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));
    }
}

2 个答案:

答案 0 :(得分:3)

这样做(适配器中的相同位置):

if (position%2 == 0) {
     holder.itemView.setBackgroundColor(Color.parseColor("#fafafa"));
} else {
     holder.itemView.setBackgroundColor(Color.parseColor("#ffffff"));
}

答案 1 :(得分: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