private void processPoiData() { if (mAllPoi.size() > 0) { for (int i = 0; i < mAllPoi.size(); i++) { addSelectItemByPosition(i); String name = mAllPoi.get(i).getName(); String[] items; if (name.contains("(")) { items = name.replace(")", "").split("\("); } else { items = name.split("-"); } for (String item : items) { addSelectItem(item, i); } } } } 在这调用了 报错 java.lang.ArrayIndexOutOfBoundsException: length=10; index=10 改一下
时间: 2024-03-20 11:38:57 浏览: 44
好的,你可以尝试将 `addSelectItemByPosition()` 方法中的 `position` 参数改为 `i + 1`,并在调用 `addSelectItemByPosition()` 方法之前先判断 `indexString` 数组的长度是否大于等于 `i + 1`,代码如下:
```
private void processPoiData() {
if (mAllPoi.size() > 0) {
for (int i = 0; i < mAllPoi.size(); i++) {
if (indexString.length >= i + 1) {
addSelectItemByPosition(i + 1);
}
String name = mAllPoi.get(i).getName();
String[] items;
if (name.contains("(")) {
items = name.replace(")", "").split("\\(");
} else {
items = name.split("-");
}
for (String item : items) {
addSelectItem(item, i);
}
}
}
}
protected void addSelectItemByPosition(int position) {
if (indexString.length >= position) {
addSelectItem(indexString[position - 1], position - 1);
}
}
```
这样可以避免 `ArrayIndexOutOfBoundsException` 异常的发生。
阅读全文