为Android应用程序存储ArrayList内容的最佳方法?

时间:2013-08-21 23:15:55

标签: java android

我知道有一些方法可以在Android应用程序中保存数据,但我想知道什么是最简单和/或最有效的,或者换句话说哪种方法会在复杂性/合理性的范围内获胜/性能。

基本上我只有两个类ArrayLists(类对象的ArrayLists,而不是原始数据类型)。一个ArrayList的对象的构造函数需要三个整数,另外四个。我基本上需要存储那些整数的值(我有每个设置的方法以整数形式返回整数或者整数),并告诉每个整数属于哪个。

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

以及一大堆其他索引将返回不同的数字,如何存储该数据,以便在应用程序关闭并重新启动时重新加载,并且值保持为初始化的索引?

2 个答案:

答案 0 :(得分:1)

将其写入内部存储是一种解决方案。您可以在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 {
    ....
    ....
}

答案 1 :(得分:0)

我发现将对象保存为JSON字符串非常简单有效。 查看GSON库。它将从JSON转换为java和java回到JSON,只需要很少的小小。

https://code.google.com/p/google-gson/

我喜欢GSON做这件事。