2012-12-04 26 views
1

我正在使用Surfaceview編寫遊戲,並且遇到了有關將數據保存到包中的問題。從(浮動)ArrayList中將值保存到一個包中

最初,我有其中存儲的Y座標(以整數的形式)精靈,將只移動上下的ArrayList。聲明:

static ArrayList<Integer> ycoordinates = new ArrayList<Integer>(); 

我使用它們保存到一個Bundle如下:

myBundle.putIntegerArrayList("myycoordinates", ycoordinates); 

並使用該恢復他們:

ycoordinates.addAll(savedState.getIntegerArrayList("ycoordinates")); 

這一切都非常完美。但是,我不得不改變整個座標系,所以它是基於達爾文時間來讓我的精靈在不同屏幕上以統一的速度移動。這又是一次完美的工作。

但是,由於此更改,我現在必須將這些值存儲爲浮點數而不是整數。

所以,我的聲明:

static ArrayList<Float> ycoordinates = new ArrayList<Float>(); 

所以這是背景,現在的問題是,我該如何存儲和從浮法ArrayList的恢復值?似乎沒有「putFloatArrayList」或「getFloatArrayList」。

(我使用了Arraylist而不是Array,因爲精靈的數量需要動態變化)。

任何幫助,將不勝感激。

非常感謝

+0

精靈的數量在包中時大概不會改變,因此您可以將它作爲數組存儲,並在還原時轉換回列表。 –

+0

偉大的想法帕特里夏,謝謝,任何想法如何將Arraylist轉換爲數組?這是一件簡單的事情嗎?再次感謝。 – Zippy

+0

我建議閱讀關於List toArray()方法。 –

回答

0

我已經寫了幾個簡單的方法,以列表之間進行轉換和float []。您可以在浮動[]上使用Bundle putFloatArray()getFloatArray

import java.util.ArrayList; 
import java.util.List; 


public class Test { 
    public static void main(String[] args){ 
    List<Float> in = new ArrayList<Float>(); 
    in.add(3.0f); 
    in.add(1f); 
    in.add((float)Math.PI); 
    List<Float>out = toList(toArray(in)); 
    System.out.println(out); 
    } 

    public static float[] toArray(List<Float> in){ 
    float[] result = new float[in.size()]; 
    for(int i=0; i<result.length; i++){ 
     result[i] = in.get(i); 
    } 
    return result; 
    } 

    public static List<Float> toList(float[] in){ 
    List<Float> result = new ArrayList<Float>(in.length); 
    for(float f : in){ 
     result.add(f); 
    } 
    return result; 
    } 

} 
+0

很好 - 非常感謝 - 真的很有幫助! :-) – Zippy

相關問題