存储自定义对象的ArrayList

时间:2013-03-14 06:30:17

标签: android sqlite serialization storage sharedpreferences

我有一组名为AccActivity的自定义对象。

public class AccActivity {
    AccData Data;
    AccData fData;
    AccData lpfData;

    int[] crossings;
    float[] sd;
    int type = -1;
    private float[] minMax;
    float spread = 0.30f;
    int rate = 8;
    float alpha = 0.30f;
    float avResAcc;
    float[] peakDistances;
    int[] peakNumber;
    ArrayList<Integer> peakIndicesX;
    ArrayList<Integer> peakIndicesY;
    ArrayList<Integer> peakIndicesZ;

AccData对象如下所示:

public class AccData {
    private ArrayList<Float> xData;
    private ArrayList<Float> yData;
    private ArrayList<Float> zData;
    private float[] averageNoise;

现在,我已经在互联网上研究了这个问题,显然有三种选择在android中存储数据 - 所有这些选项似乎都不适合我

SharedPrefs - 不,因为它用于存储原始键值首选项

序列化 - 保存到文件 - 不确定 - 我只看到了在非自定义对象类型上使用的示例,我将如何解决它?

SQLite - 不,堆栈溢出的另一个答案说: “我如何将自定义对象存储在数据库中?

除非您使用的是对象数据库,否则不会这样做。您将对象的表示存储在数据库中。“

他们提到的这个对象数据库是什么?

有人可以告诉我如何保存和检索我正在使用的这个arrayList吗?

编辑:我不关心SDK兼容性,可以选择最高的一个,因为这是一个单独的研究项目

EDIT2:目标:关闭手机并重新打开后,我希望在打开应用程序时自动检索ArrayList数据。

3 个答案:

答案 0 :(得分:1)

您可以很好地使用Serialization。如果是自定义对象,请确保自定义对象implements Serializable接口以及该对象中的任何自定义对象也应为Serializable

<强> E.g: -

class CustomObject implements Serializable
{
     public String name;
}

ArrayList<CustomObject> objectList = new ArrayList<CustomObject>();

因此objectList现在是可序列化的,您也可以在Intent中的活动之间传递此内容。

答案 1 :(得分:1)

您可以将AccData中的每个数组序列化为JSON并将其存储在SQLite database中。

答案 2 :(得分:0)

回答对象数据库问题时,至少有2个可在Android上运行的对象数据库 - db4oPerst