android arraylist无法设置对象

时间:2014-02-16 15:12:52

标签: android arraylist

我在下面设置代码。

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

和make方法在同一个类中,编写代码:

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无法保存另一个arraylist或数据。

我该怎么做才能解决它?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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);
}