2014-02-16 37 views
0

我设置了下面的代码。android arraylist无法设置对象

ArrayList<RectF> rects1x1 = new ArrayList<RectF>(); 
ArrayList<ArrayList<RectF>> arrayedRects = new ArrayList<ArrayList<RectF>>(); 

,并在同一个类的方法,编写代码:

public void SetDots(int many) 
{ 



switch(shapeID) 
{ 
case 3: 
    for(int i=0; i<3; i++) 
    { 
    for(int j=0; j<100; j++) 
     { 
     rects1x1.add(new RectF(j , j , i+110 , i+50)); 
     } 
    arrayedRects.add(rects1x1); 
} 
break; 

,但我认为此ArrayList和ArrayList不能救另一个数组列表或数据。

我能做些什么来解决它?

+1

你可以......但是,你必须创建第二循环开始前内部数组的新实例...在你的你正在向arraylist的arraylist添加相同的arraylist代码 – Selvin

回答

1

的问题是,你是在外环添加相同的ArrayList到顶级之一,一遍又一遍。没有必要将rects1x1定义为字段,只需将其放在setDots中(注意“seDots”中的小写前导“s”,这是一种java方法命名约定)。

您需要实例化一个新的rects1x1您的外部循环的每次迭代,就像这样:

case 3: 
    ArrayList<RectF> rects1x1; 
    for(int i=0; i<3; i++){ 
     rects1x1 = new ArrayList<RectF>(); 
     for(int j=0; j<100; j++){ 
      rects1x1.add(new RectF(j , j , i+110 , i+50)); 
     } 
     arrayedRects.add(rects1x1); 
    } 
    break; 
+0

谢谢!!!!!!!!! – user3316230

+0

@ user3316230很高兴有帮助!如果解决了您的问题,请接受答案。 – Matej

+0

@ user3316230感谢您接受答案。 – Matej

0

你需要这样做:

for(int i=0; i<3; i++) 
    { 
    rects1x1 = new ArrayList<RectF>(); 
    for(int j=0; j<100; j++) 
     { 
     rects1x1.add(new RectF(j , j , i+110 , i+50)); 
     } 
    arrayedRects.add(rects1x1); 
} 
+0

谢谢!!!!!!!!! – user3316230