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

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

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

例如,如果我有: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 object1List = null; static ArrayList getObject1List(Context mContext) { FileInputStream stream = null; try { stream = mContext.openFileInput(OBJECT_1_LIST); ObjectInputStream din = new ObjectInputStream(stream); object1List = (ArrayList) 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(); } 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 { .... .... } 

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

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

我喜欢GSON做这件事。