android - 存储自定义对象的 ArrayList

标签 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 数据。

最佳答案

您可以很好地使用Serialization。如果是自定义对象,请确保您的自定义对象实现 Serializable 接口(interface),并且该对象中的任何自定义对象也应该是Serializable

例如:-

class CustomObject implements Serializable
{
     public String name;
}

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

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

关于android - 存储自定义对象的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15402650/

相关文章:

ruby-on-rails - rails 3.2 : Replace null values with empty string from json serialization

Android 如何调整 EditText 内文本的大小

android - 编辑 android init.rc 以重新启动第三方守护进程

android.database.sqlite.SQLiteException : unrecognized token:

c# - WebApi 从 HttpActionContext 序列化对象

javascript - 使用原型(prototype) Form.serialize() 有多安全?

java - 为什么 getItem(position) 与新实例一起使用? (不应该为零?)

android - 如何在 android 中使用可视化图 TableView 录制音频?

iphone - 如何在iPhone上动态创建sqlite3数据库?

Android Room 持久性库@Update 不工作