将(Float)ArrayList中的值保存到Bundle中

时间:2012-12-04 19:30:40

标签: arrays arraylist floating-point integer bundle

我正在使用Surfaceview编写游戏,并且有一个与将数据保存到捆绑包有关的问题。

最初,我有一个arraylist,它存储了只能上下移动的精灵的Y坐标(以整数形式)。声明为:

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

我使用以下内容将它们保存到Bundle中:

myBundle.putIntegerArrayList("myycoordinates", ycoordinates);

使用它恢复它们:

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

这一切都很完美。但是,我必须更改整个坐标系统,因此它基于Delta时间,以允许我的精灵在不同的屏幕上以均匀的速度移动。这又是完美的。

但是,由于此更改,我现在必须将这些值存储为浮点数而不是整数。

所以,我宣称:

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

这就是背景,现在我的问题是,如何存储和恢复Float Arraylist的值?似乎没有“putFloatArrayList”或“getFloatArrayList”。

(我使用了Arraylist而不是数组,因为sprite的数量需要是动态的。)

任何帮助都将不胜感激。

非常感谢

1 个答案:

答案 0 :(得分:0)

我写了几个简单的方法来在List和float []之间进行转换。您可以在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;
  }

}