public void checkRoutePlanItemsValidity(List<BNRoutePlanItem> mRoutePlanItems) { if (mRoutePlanItems == null || mRoutePlanItems.size() < 1 || mRoutePlanItems.get(0) == null) { Log.d("TAGAA", "checkRoutePlanItemsValidity: 111"); return; } if (mRoutePlanItems.size() < 2 || mRoutePlanItems.get(1) == null) { Log.d("TAGAA", "checkRoutePlanItemsValidity: 222"); return; } if (mRoutePlanItems.size() < 3 || mRoutePlanItems.get(2) == null) { Log.d("TAGAA", "checkRoutePlanItemsValidity: 333"); return; } } 这个方法分别在三个点击事件中在调用,点击第二个数据,为空时,执行的还是第一个判断条件,导致 mRouteList.addAll(mRouteDetails.get(1)); mResultAdapter.notifyItemChanged(1); 数组下标越界
时间: 2023-11-27 07:52:33 浏览: 55
这个问题的原因是在第一个判断条件中只判断了 mRoutePlanItems 是否为空或者只有一个元素,而没有判断 mRoutePlanItems.get(0) 是否为空。因此,当 mRoutePlanItems.get(0) 为空时,就会进入第一个判断条件并返回,导致后续的判断条件没有执行。
为了解决这个问题,你需要在第一个判断条件中增加对 mRoutePlanItems.get(0) 是否为空的判断。可以修改代码如下:
```
public void checkRoutePlanItemsValidity(List<BNRoutePlanItem> mRoutePlanItems) {
if (mRoutePlanItems == null || mRoutePlanItems.size() < 1 || mRoutePlanItems.get(0) == null) {
Log.d("TAGAA", "checkRoutePlanItemsValidity: 111");
return;
}
if (mRoutePlanItems.size() < 2 || mRoutePlanItems.get(1) == null) {
Log.d("TAGAA", "checkRoutePlanItemsValidity: 222");
return;
}
if (mRoutePlanItems.size() < 3 || mRoutePlanItems.get(2) == null) {
Log.d("TAGAA", "checkRoutePlanItemsValidity: 333");
return;
}
}
```
这样就可以保证在 mRoutePlanItems.get(0) 为空时会直接返回,不会进入后续的判断条件。
阅读全文