2014-01-23 197 views
-2

我正在做一個項目,我有一個基於parentHead數組的方法,選擇了ArrayList v(包含Voce類的對象)中每個項都具有匹配的屬性與當前的parentHead數組的項目,並將它們放入另一個arrayList,依次添加到另一個arrayList。 簡而言之,有一個包含許多數組列表的項目列表(item),每個列表項都包含Voce類的許多對象。 問題是,當我將對象「Voce」的數組列表添加到主數組列表(item)中時,列表數組「item」中出現的所有元素都被我添加的數組列表覆蓋,所以item [0] = item [1] = item [2] ... = item [i] 從什麼可能導致這個? 感謝ArrayList添加項目錯誤Android(Eclipse)

private ArrayList<ArrayList<Voce>> prepareListData(ArrayList<Voce> v) 
{ 
    int j=0,i=0; 

    ArrayList<ArrayList<Voce>> item=new ArrayList<ArrayList<Voce>>(); 
    ArrayList<Voce> temp=new ArrayList<Voce>(); 
    String stringa; 

    for(i=0;i<parentHead.length;i++) 
    { 
     temp.clear(); 

     if(parentHead[i].compareTo(" ")!=0) 
     { 
      for(j=0;j<v.size();j++) 
      { 
      stringa=""+v.get(j).getMese()+"/"+v.get(j).getAnno(); 

      if(stringa.compareTo(parentHead[i])==0) 
      temp.add(v.get(j)); 
      } 

      if(temp.size()!=0) 
      item.add(temp); 
     } 
     else 
     i=parentHead.length; 
    } 

    return item; 
} 
+0

你經常使用相同的工作列表,這個列表是在你的記憶固定的對象,你怎麼能指望它是不同的每一輪?每次創建一個'新的ArrayList <>()',如果任何答案解決了您的問題,那麼請接受它們,您將會很好 – avalancha

+0

。 – Prateek

回答

1

因爲你身上有temp一個數組列表,你多次填補和明確的。

您需要一個新的數組列表添加到「外部」數組列表;你不能像這樣重複使用它們。

例如,而不是temp.clear()你想要temp = new ArrayList<Voce>()

+0

感謝它的作品:) – dadrm33

0

使用new ArrayList添加到outer ArrayList

當你清除你的內部數組列表時,你添加的數組列表實際上被清除。

在拍攝像這樣做,

ArrayList<Voce> temp=null; // earlier new ArrayList<Voce>(); 
String stringa; 

for(i=0;i<parentHead.length;i++) 
{ 
    temp=new ArrayList<Voce>(); // earlier temp.clear(); 

    if(parentHead[i].compareTo(" ")!=0) 
    { 
     for(j=0;j<v.size();j++){ 
     stringa=""+v.get(j).getMese()+"/"+v.get(j).getAnno(); 

     if(stringa.compareTo(parentHead[i])==0) 
      temp.add(v.get(j)); 
    } 

    if(temp.size()!=0) 
     item.add(temp); 
    }else 
     i=parentHead.length; 
} 
+0

感謝它的作品:)我試圖使用新的分配,但不想工作.-。也許我錯了什麼。 不過謝謝:) – dadrm33