在Android应用程序中保存对象列表的最简单或本机方式是什么?
我需要保存它,然后在应用再次启动时加载它。
会很好,也许有人有一个随时可以使用的库,它可以为我提供一切。
答案 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)
你试过共享偏好吗?当您的应用即将退出时,使用共享首选项保存该应用,并在应用启动时再次保存,请加载该首选项。