2014-01-23 93 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