2

在 android 应用程序中保存对象列表的最简单或本地方法是什么?

我需要保存它,然后在应用程序再次启动时加载它。

会很好,也许有人有一个随时可用的库,它为我制作了一切。

4

3 回答 3

4

让您的物品存放在LinkedList工具中,Parcelable这样您就可以将它们放入您的bundle. 在onSaveInstance你可以把你的对象在bundle使用中:

bundle.putParcelableArrayList ("key", list);

并使用以下onRestoreInstanceState方法Activity从中获取数据bundle

bundle.getParcelableArrayList();
于 2012-05-30T15:10:29.553 回答
3

我通常不提供完整的答案,但因为它在我的剪贴板中......

这应该适用于任何 List 实现。

此外,您需要定义/交换Constants.EXTERNAL_CACHE_DIR,并且可能希望使用 UI-Thread 以外的其他东西进行生产。

 public static void persistList(final List<String> listToPersist, final String fileName) {
    FileWriter writer = null;
    BufferedWriter bufferedWriter = null;
    File outFile = new File(Constants.EXTERNAL_CACHE_DIR, fileName);
    try {
      if (outFile.createNewFile()) {
        writer = new FileWriter(outFile);
        bufferedWriter = new BufferedWriter(writer);
        for (String item : listToPersist) {
          bufferedWriter.write(item + "\n");
        }
        bufferedWriter.close();
        writer.close();
      }
    } catch (IOException ioe) {
      Log.w(TAG, "Exception while writing to file", ioe);
    }
  }

  public static List<String> readList(final String fileName) {
    List<String> readList = new ArrayList<String>();
    try {
      FileReader reader = new FileReader(new File(Constants.EXTERNAL_CACHE_DIR, fileName));
      BufferedReader bufferedReader = new BufferedReader(reader);
      String current = null;
      while ((current = bufferedReader.readLine()) != null) {
        readList.add(current);
      }
    } catch (FileNotFoundException e) {
      Log.w(TAG, "Didn't find file", e);
    } catch (IOException e) {
      Log.w(TAG, "Error while reading file", e);
    }
    return readList;
  }
于 2012-05-30T15:06:26.453 回答
0

你有没有试过共享偏好..?当您的应用程序即将退出时,使用共享首选项保存它,并在应用程序启动时再次加载该首选项。

于 2012-05-30T15:07:32.420 回答