android - java.lang.IndexOutOfBoundsException: Index: 30, Size: 30 in onBindViewHolder() on 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());
}
到达信息数组列表大小为 30,位置日志打印 0 - 30。
我知道发生此错误是因为 index 以 0 开头,而 size 以 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 并且发生错误。
我搜索了帖子,但我不知道如何解决它。
先感谢您。
解决方案
在您的适配器中,您必须使用:
@Override
public int getItemCount() {
return arrivalInfoArrayList.size();
}
推荐阅读
- python - 创建连续 html 解析的最佳方法是什么?
- javascript - 页面加载后,Javascript / Jquery提交没有ID或类的表单
- java - 如何从 selenium webdriver 中的椭圆中获取数据
- mongodb - 从 MongoDB 中的嵌套文档中提取唯一值
- php - 发送 Firebase 推送通知
- java - 在 Springfox Swagger UI 中隐藏 Client_id - 2.8.0
- c# - 如何解决 GDI+ 中的一般错误和内存不足
- ios - CloudKit 区域删除和娱乐
- python - 如何从嵌套字典中查找列表组合
- go - gob.Register 名称未为另一个包中的接口注册