【发布时间】:2015-03-04 08:02:21
【问题描述】:
适配器中的用户报告了此错误。我无法重现:
java.lang.ArrayIndexOutOfBoundsException: length=8; index=8
在这一行
if (columnas.get(column).getENTR() == 3)
但我不明白,因为我之前检查过if (columnas.size() > column)。我该如何解决这个错误?示例代码如下。
private List<bdcolums> columnas = new ArrayList<bdcolums>();
private View getHeader(final int row, final int column, View convertView, final ViewGroup parent) {
final ViewHolder holder;
if (convertView == null || convertView != inflater.inflate(R.layout.item_table_header, parent, false)) {
convertView = inflater.inflate(R.layout.item_table_header, parent, false);
holder = new ViewHolder();
holder.header_desc = (TextView) convertView.findViewById(R.id.text2);
holder.header_nom = (TextView) convertView.findViewById(android.R.id.text1);
holder.header_img = (ImageView) convertView.findViewById(R.id.dibuheader);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (columnas.size() > column) {
if (columnas.get(column).getENTR() == 3) {
//do something
}
} else {
//do something
}
return convertView;
}
【问题讨论】:
-
请发布完整的堆栈跟踪。
-
看起来一切都很好。
getENTR()方法中可能发生异常。你能发布更详细的堆栈跟踪吗? -
你用的是什么适配器?
-
这是一个多线程应用程序吗?如果 ArrayList 在另一个线程中通过删除一个项目被修改,恰好在检查之后和访问之前,那么你会得到这个异常。
-
请发布您的
getENTR()方法