在 Android 中保存 ArrayList 的最简单方法是啥?

Posted

技术标签:

【中文标题】在 Android 中保存 ArrayList 的最简单方法是啥?【英文标题】:What is the easiest way to save an ArrayList in Android?在 Android 中保存 ArrayList 的最简单方法是什么? 【发布时间】:2016-04-27 19:47:54 【问题描述】:

我正在构建一个包含收藏夹列表的应用,但是当我退出应用时,收藏夹列表被重置为空,因为该列表没有被保存(因为列表无法保存在 SharedPrefs 中)。如何在 android 中保存 ArrayList OR String[]?如果您推荐序列化或本地数据库,您能解释一下这些是什么意思吗?我听说过这些术语并遵循教程但不明白。

也许解决同一问题的另一种方法是您通常如何建立收藏夹列表?

【问题讨论】:

序列化并使用首选项将其取回 您可以使用 sqlite 以有序的方式存储数据。这个documentation 对你有很大帮助。 【参考方案1】:

有一个问题很好地解释了它:

Save ArrayList to SharedPreferences

从它的回答(我已经测试过了),在 API 11 之后你可以做这样的事情:

//Retrieve the values
Set<String> set = myScores.getStringSet("key", null);

//Set the values
Set<String> set = new HashSet<String>();
set.addAll(listOfExistingScores);
scoreEditor.putStringSet("key", set);
scoreEditor.commit();

我总结了他的答案,但你应该检查完整的答案。真的很有帮助!

【讨论】:

不一样,因为我没有要求将它保存在 SharedPreferences 中,因为这不是 SharedPreferences 应该用于的用途,尤其是在它是一个大数组的情况下。谢谢!我会试试这个,但就像我说的,希望我能找到 SharedPreferences 的替代品,正如我的帖子中提到的,我想找到“默认”/推荐的方式来保存收藏夹列表。 当然。我没想到这是一个大数组。既然您要求简单,我认为这会有所帮助。无论如何,我们始终应该记住,简单并不总是最好的。我会编辑它,因为它没有重复。我的错误【参考方案2】:

选项1:最简单。遍历arraylist并将每个元素保存到sharedPreferences中

选项2:将arraylist转换为字符串。然后保存到共享首选项中。

选项3:将数据保存到数据库中。谷歌如何在android中使用sqllite

【讨论】:

我想尝试选项 3,但我的问题是我找不到像 SQLite 这样的数据库的保存特定教程,最好我不想为了保存收藏夹列表。 要将内容保存在数据库中,一种非常简单的方法是使用 Sugar ORM,正如 Isaac Urbina 在另一个答案中所建议的那样。【参考方案3】:

您可以使用 Android 的 Sugar ORM 库。它将为您创建所需的数据库,只需使您的 ArrayList 的对象类扩展 SugarRecord。 例如,如果您的 List 类型是 ArrayList,您必须让 Books 类扩展 SugarRecord,然后在您的 Activity 中循环遍历项目并设置 item.save(),然后将其保存到数据库中。 我有一个示例项目here。 如果您有任何问题,请给我发送 PM。 希望对您有所帮助!

【讨论】:

以上是关于在 Android 中保存 ArrayList 的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Android 的 MainActivity 中保存 ArrayList?

Android:将arrayList保存到文件不起作用

在共享首选项android中保存模型类的ArrayList<ModelClass>

从 SQLite 数据库加载的数据未保存在模型类 ArrayList android 中

如何在 Android 屏幕旋转上保存自定义 ArrayList?

Android保存ArrayList至SharedPreferences