【发布时间】:2018-01-28 06:36:00
【问题描述】:
当我在onPostExecute() 期间过滤/检查我在ArrayList 中的模型项时遇到问题,我得到一个异常ConcurrentModificationException 试图访问/循环 通过"Items"
我有一个具有以下 inits 和 onCreateView() inits 的活动;
//model init
List<TrackingModel> Items;
//onCreateView() {}
Items = new ArrayList<>();
//and prompt async task
new RetrieveFeedTask().execute();
在我通过URL 获取JSON 并在JSON 数据节点上执行循环之后,在onPostExecute() 内的项目循环期间发生此异常。
//For Loop on JSON Response in onPostExecute()
JSONArray data = obj.getJSONArray("response");
for (int i = 0; i < data.length(); i++) {
String id = data.getJSONObject(i).optString("id");
//in here I add to Items, first checking if Items.isEmpty()
if(Items.isEmpty()){
//add to Model/Items.ArrayList
//works fine
TrackingModel reg = new TrackingModel();
reg.setId(id);
Items.add(reg);
}else{
//check getJSONObject() item already in Items.ArrayList to avoid duplications
for (TrackingModel Item : Items) {
if(Item.id().toString().contains(id)){
//already in ArrayList, skip adding
}else{
//error occurs here as we are adding to ArrayList
//cant do .add() when in for loop ....
//Do I add to the array outside the For Loop via method?
//outsideMethodAddToItems(id, another_string, more_string);
TrackingModel reg = new TrackingModel();
reg.setId(id);
Items.add(reg);
}
}
}
}
是否需要在"Items" for-loop via 方法内添加数组?
outsideMethodAddToItems(id, another_string, more_string);
【问题讨论】:
-
尝试使用
Iterator,这是一个示例stackoverflow.com/questions/18448671/…
标签: java android json arraylist