首页 > 解决方案 > RecyclerView onCreateViewHolder 位置背景颜色

问题描述

我需要在里面设置背景颜色onCreateViewHolder。所以,当我position等于position % 2 == 0然后设置一个背景颜色,否则设置另一个颜色。我的背景颜色是我所有行的标准颜色,这就是为什么我想在里面使用它onCreateViewHolder而不是onBindViewHolder。如果我错了,请纠正我。问题是当我在holder.getAdapterPosition里面使用onCreateViewHolder它时返回'-1'。这对我来说似乎很正常。但是我该如何解决呢?

  @Override
  public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {


    View mView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.inflate_common_item, viewGroup, false);
    ViewHolder holder= new ViewHolder(mView);
    if(holder.getAdapterPosition % 2 ==0)
    {
       //Row BackgroundColor to red.
    }
    else
    {
      //Row BackgroundColor to Green.
    }
    return holder;

}

因此,当我使用上面的代码时,我遇到了索引超出范围的异常。有什么办法可以解决吗?

标签: javaandroidxamarin

解决方案


尝试这个:

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.inflate_common_item, viewGroup, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    if(position % 2 ==0) {
        holder.itemView.setBackgroundColor(
                ContextCompat.getColor(holder.itemView.getContext(), R.color.color_red));
    } else {
        holder.itemView.setBackgroundColor(
                ContextCompat.getColor(holder.itemView.getContext(), R.color.color_green)); 
    }
}

推荐阅读