java - android应用程序存储ArrayList内容的最佳方法?

标签 java android

我知道有几种在 Android 应用程序中保存数据的方法,但我想知道什么是最简单和/或最有效的,或者换句话说,哪种方法会在复杂性/合理性方面胜出/表现。

基本上我只有两个类ArrayList(类对象的ArrayList,而不是原始数据类型)。一个 ArrayList 对象的构造函数采用三个整数,其他四个。我基本上需要存储这些整数的值(我为每个设置都有方法,以字符串或整数的形式返回整数),并以一种方式告诉每个整数属于什么。

例如,如果我有: arrayListOne.get(1).getNumbers() 返回 1, 2, 3 arrayListTwo.get(1).getNumbers() 返回 1, 2, 3, 4

以及一整堆会返回不同数字的其他索引,我如何存储这些数据,以便当应用程序关闭并重新启动时,它会重新加载,并且值与它们初始化时的索引保持一致?

最佳答案

将其写入内部存储是一种解决方案。您可以在 Util 类中使用以下静态方法:

检索ArrayList:

final static String OBJECT_1_LIST = "object_1_list";
static ArrayList<MyObject1> object1List = null;

static ArrayList<MyObject1> getObject1List(Context mContext) {
    FileInputStream stream = null;

    try {
        stream = mContext.openFileInput(OBJECT_1_LIST);
        ObjectInputStream din = new ObjectInputStream(stream);
        object1List = (ArrayList<MyObject1>) din.readObject();
        stream.getFD().sync();
        stream.close();
        din.close();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e1) {
        e1.printStackTrace();
    }

    if (object1List == null) {
        object1List = new ArrayList<MyObject1>();
    }

    return object1List;
}

类似地,更新ArrayList:

private static void updateObject1List(Context mContext) {
    FileOutputStream stream = null;

    try {
        stream = mContext.openFileOutput(OBJECT_1_LIST,
                Context.MODE_PRIVATE);
        ObjectOutputStream dout = new ObjectOutputStream(stream);
        dout.writeObject(object1List);
        stream.getFD().sync();
        stream.close();
        dout.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

要添加项目:

static void addToObject1list(Context mContext, MyObject1 obj) {
    Utilities.getObject1List(mContext).add(obj);
    Utilities.updateObject1List(mContext);
}

添加删除项目和清除 ArrayList 的方法。

您还需要 MyObject1 来实现 Serializable:

public class MyObject1 implements Serializable {
    ....
    ....
}

关于java - android应用程序存储ArrayList内容的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18369166/

相关文章:

Android谷歌地图自定义布局

android - 是否可以在不使用任何第三方库的情况下在 phonegap 中推送通知?

java - 比较 Java 列表

java - 为什么 ssh 的 Linux java -version 给出不同的结果?

android - 任务 ':preDexDebug' 执行失败

android - 隐藏两个按钮并在 xml 上显示不同的按钮

java - 如何从 android studio 中删除不兼容类型错误

java - 分配字节数组以获得 40 亿位

java - RabbitMQ 批量确认

java - 在 Spring Boot 中运行测试时不满足依赖关系