我需要在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;


}

因此,当我使用上面的代码时,我得到的例外是索引超出范围。
有什么办法可以解决?

最佳答案

根据理想的解决方案,您应该在onBindViewHolder中编写此代码以使用“ getAdapterPosition”。

如果您只希望onCreateViewHolder中的行背景颜色与您可以尝试的不同,则这将连续为您提供一个红色行和另一个其他颜色行。

您需要创建一个全局变量。

布尔型Manual_color = true;

@Override
  公共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(Manual_color)
{
   //Row BackgroundColor to red.
   Manual_color = false;
}
else
{
  //Row BackgroundColor to Green.
  Manual_color = true;
}
return holder;

10-06 13:40