在Android应用程序中保存LinkedList的简便方法?

时间:2012-05-30 15:00:46

标签: android

在Android应用程序中保存对象列表的最简单或本机方式是什么?

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

会很好,也许有人有一个随时可以使用的库,它可以为我提供一切。

3 个答案:

答案 0 :(得分:4)

让您的商品存储在LinkedList工具Parcelable中,以便将它们放入bundle。在onSaveInstance中您可以使用以下内容将对象放入bundle

bundle.putParcelableArrayList ("key", list);

并在onRestoreInstanceState的{​​{1}}中使用以下内容从Activity获取数据:

bundle

答案 1 :(得分: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;
  }

答案 2 :(得分:0)

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