我有3个arraylist,1st arraylist包含默认值
第二个arraylist包含来自web-service的值
我正在比较2个arraylist值,并从两个列表中获取非常用值,并使用非常见列表填充第3个arraylist。
但我的问题是,每次网络服务正在调用时,列表会一次又一次地填充。
代码:
arraylist1 = new ArrayList<HashMap<String, String>>();
for (int i = 0; i < arrayListNew.size(); i++) {
idNew = arrayListNew.get(i).get("id");
if(idNew.contains(arraylist.get(i).get("id")))
{
newAlert = true;
return;
}else {
NewList = new HashMap<String, String>();
NewList.put("id", idNew);
arraylist1.add(NewList);
arraylist.addAll(arraylist1);
listAdapter = new ListViewAdapter(getApplicationContext(), arraylist);
lvTitle.setAdapter(listAdapter);
listAdapter.show(i);
generateNotification();
}
arraylist1.clear();
}
任何人都可以建议我应该在哪里清除arraylist,即每次 arraylist1 或删除以前的值
答案 0 :(得分:0)
它有点乱,但我想我看到了你的问题。您只检查arrayList的一个位置,而不是检查所有arrayList。我认为这可能是正确的解决方案,尽管我可能不太了解你的问题:
newAlert = false
for (int j=0; i < arrayListNew.size(); i++) ){
if(!idNew.contains(arraylist.get(i).get("id")))
{
newAlert = true;
return;
}
}
if(newAlert){
NewList = new HashMap<String, String>();
NewList.put("id", idNew);
arraylist1.add(NewList);
arraylist.addAll(arraylist1);
listAdapter = new ListViewAdapter(getApplicationContext(), arraylist);
lvTitle.setAdapter(listAdapter);
listAdapter.show(i);
generateNotification();
}
答案 1 :(得分:0)
try it..Clear your list before for loop
arraylist1 = new ArrayList<HashMap<String, String>>();
arraylist1.clear();
for (int i = 0; i < arrayListNew.size(); i++) {
idNew = arrayListNew.get(i).get("id");
if(idNew.contains(arraylist.get(i).get("id")))
{
newAlert = true;
return;
}else {
NewList = new HashMap<String, String>();
NewList.put("id", idNew);
arraylist1.add(NewList);
arraylist.addAll(arraylist1);
listAdapter = new ListViewAdapter(getApplicationContext(), arraylist);
lvTitle.setAdapter(listAdapter);
listAdapter.show(i);
generateNotification();
}
}