2013-01-02 87 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

相關問題