2013-01-02 61 views
0

我有一个简单的问题,我无法解决。我有一个Vector<Vector<PointF>>对象,我想保存到ArrayList中。我试着这样做:如何将Vector <Vector <PointF>>保存到ArrayList中?

ArrayList<Vector<Vector<PointF>>> my_arraylist = new ArrayList<Vector<Vector<PointF>>>(); 

和保存这样的:

public void setMyArrayList(Vector<Vector<PointF>> polyLines) { 
     my_arraylist.add(polyLines); 
     this.my_arraylist = my_arraylist; 
} 

当我尝试获取在my_arraylist特定的元素,我总是在my_arraylist的最后一个元素。有没有一种将<Vector<Vector<PointF>>保存到ArrayList的特定方法?

+2

你为什么要这样做** this.my_arraylist = my_arraylist; **这是没有意义的。你可以在你访问元素的地方添加代码。 – BevynQ

+0

谢谢你的回复。首先我检索我保存元素的整个ArrayList: public ArrayList >> getMyArrayList(){ \t return my_arrayList; } 我访问像这样的元素: ArrayList >> returned_arrayList = getMyArrayList(); int index = 0; Vector > my_data = returned_arrayList.get(index); – sireesha

回答

0

我解决了它。我不得不通过克隆Vector阵列来创建它Object和存储:

Object temp = new Object(); 

temp = polyLines.clone(); 

和温度值存储在我的Arraylist<Object>.将其转换回Vector<Vector<PointF>>每当我需要ArrayList中使用特定的元素。

0

我看到的只是一个小问题,您的初始化

ArrayList<Vector<Vector<PointF>>> my_arraylist = new ArrayList<Vector<Vector<PointF>>>(); 

,并去掉了一些不必要的代码:

public void setMyArrayList(Vector<Vector<PointF>> polyLines) { 
    my_arraylist.add(polyLines); 
} 

我看不出有任何理由,为什么这不应该工作。

+0

对不起,这是我的不好,我正确初始化,但仍然无法正常工作。 – sireesha

+0

我认为我们需要更多代码才能找到问题。 – MrSmith42

+0

我很确定问题不在代码中,您向我们展示了。在您从ArrayList读取的代码中调用'setMyArrayList(..)'的代码中存在问题。 – MrSmith42

0

所以你总是只获得你添加到ArrayList的最新元素?这会提示在向ArrayList添加值之前,您可以清除()ArrayList或创建一个全新的空ArrayList。

您的问题不在您向我们显示的代码中。

尝试添加如下所示的调试输出。如果每次调用setMyArrayList时写入System.err的对象引用都发生更改,则表示您在某处创建了一个新的ArrayList,因此会丢弃您在其中添加的所有旧值。如果有的话,使用日志框架。

public void setMyArrayList(Vector<Vector<PointF>> polyLines) { 
    System.err.println("Appending to ArrayList " + my_arraylist + ", size " + my_arraylist.size()); 
    my_arraylist.add(polyLines); 
    this.my_arraylist = my_arraylist; 
} 
+0

嗨Torben,当我在你的评论中进行调试时,我发现问题与多段线中的值有关。由于polyLines是一个Vector >,其中的pointF引用是以一系列android.graphics.pointf值的形式在画布上最近绘制的。我试图找到一种方法将它们存储为对象。 – sireesha

相关问题