删除新的arraylist evertime网络服务电话

时间:2016-03-22 09:06:16

标签: android arraylist clear removeall

  • 我有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 或删除以前的值

2 个答案:

答案 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();

                    }



                }