在android应用程序中保存对象列表的最简单或最简单的方法是什么?在Android应用程序中保存LinkedList的简单方法?
我需要保存它,然后在应用程序再次启动时加载它。
会不错,也许有人有一个准备好使用库,它使我的一切。
在android应用程序中保存对象列表的最简单或最简单的方法是什么?在Android应用程序中保存LinkedList的简单方法?
我需要保存它,然后在应用程序再次启动时加载它。
会不错,也许有人有一个准备好使用库,它使我的一切。
让您的物品存储在LinkedList
实施Parcelable
,所以你可以把它们放在你的bundle
。中onSaveInstance
您可以用把你的对象在bundle
:
bundle.putParcelableArrayList ("key", list);
,并在onRestoreInstanceState
你Activity
获取数据从bundle
回用:
bundle.getParcelableArrayList();
我通常不提供完整的答案,但因为它是在我的剪贴板...
这应该与任何列表实施工作。
此外,您需要定义/交换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;
}
为什么要使用一个文件来延续简单的数组?它可以更容易地存储在SharedPreferences中。 –
由于Parcelable相当详细,必须为您想要坚持的每个类实施。 – keyboardsurfer
是的。但保留对象更容易。在这种情况下,你正在持久化字符串。你会如何采取这种方法,并坚持更复杂的对象? –