java.lang.IndexOutOfBoundsException:在Android的onBindViewHolder()中的索引:30,大小:30

时间:2019-08-26 15:30:29

标签: android

 @Override
 public void onBindViewHolder(MyAdapter.MyViewHolder holder, int position) {
    Log.d("position", "" + position);
    holder.tv_arsId.setText(arrivalInfoArrayList.get(position).getArsId());
    holder.tv_stNm.setText(arrivalInfoArrayList.get(position).getStNm());
 }

arrivalInfoArrayList的大小为30,位置日志打印为0-30。

我知道发生此错误是因为索引以0开头,大小以1开头。

我尝试过这些。

1)

if (position > 0) {
    holder.tv_arsId.setText(arrivalInfoArrayList.get(position - 1).getArsId());
    holder.tv_stNm.setText(arrivalInfoArrayList.get(position - 1).getStNm());
}

2)

for ( int i = 0; i < arrivalInfoArrayList.size(); i++) {
    holder.tv_arsId.setText(arrivalInfoArrayList.get(position).getArsId());
    holder.tv_stNm.setText(arrivalInfoArrayList.get(position).getStNm());
}

但是没有用。位置日志仍打印0-30,并且发生错误。

我搜索了帖子,但不知道如何解决。

谢谢。

1 个答案:

答案 0 :(得分:1)

在适配器中,您必须使用:

@Override
public int getItemCount() {
    return arrivalInfoArrayList.size();
}