在 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<ModelClass>
从 SQLite 数据库加载的数据未保存在模型类 ArrayList android 中