【问题标题】:Store an ArrayList of custom objects存储自定义对象的 ArrayList
【发布时间】:2013-03-02 09:52:03
【问题描述】:

我有一个名为 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 数据。

【问题讨论】:

    标签: android sqlite serialization storage sharedpreferences


    【解决方案1】:

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

    例如:-

    class CustomObject implements Serializable
    {
         public String name;
    }
    
    ArrayList<CustomObject> objectList = new ArrayList<CustomObject>();
    

    所以objectList 现在是可序列化的,您也可以在Intent 中的活动之间传递它。

    【讨论】:

    • 我尝试使用此链接中的方法:stackoverflow.com/questions/11640122/… 但由于某种原因它不起作用。
    • 我不想在活动之间传递,我希望在我关闭并重新打开手机后数据在那里
    • some reason 有点太模糊了。如果你有整个错误堆栈跟踪,可以尝试帮助你。
    • 你可以也通过,是否通过,由你决定。但它会保留在设备中,您可以稍后再读回来。
    • 我已经把这个:String ser = SerializeObject.ReadSettings(this, "myobject.dat"); if (ser != null &amp;&amp; !ser.equalsIgnoreCase("")) { Object obj = SerializeObject.stringToObject(ser); // Then cast it to your object and if (obj instanceof ArrayList) { // Do something activityLibrary = (ArrayList&lt;AccActivity&gt;)obj; } } 放入 onCreate 方法和....
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      回答您的对象数据库问题,至少有 2 个可在 Android 上运行的对象数据库 - db4o 和 Perst。

      【讨论】:

      • 我对 android 编程很陌生,我什至不知道从哪里开始使用数据库,但我很欣赏链接。
      猜你喜欢
      • 1970-01-01
      • 2015-11-26
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      相关资源
      最近更新 更多