Android 在SharedReferences中存储列表或集合

Android 在SharedReferences中存储列表或集合,android,list,sharedpreferences,Android,List,Sharedpreferences,我的应用程序有一个字符串值列表(每个值大约5-20个字符),我必须持久存储这些值。在我看来,SharedReference是最合适的,因为它只是一个简短的列表。通常它是空的,或者只包含几个值 我已经看到了基本相同的问题,答案是不合适的,因为StringSet是API级别11,我的目标是Android 2.1及以上版本,即API 7 考虑到字符串列表通常很小,使用数据库对我来说似乎完全是过火了。使用文件来存储这将是另一种解决方案,但不是那么优雅。我曾考虑过创建键(如“1”、“2”、“3”等),但这

我的应用程序有一个字符串值列表(每个值大约5-20个字符),我必须持久存储这些值。在我看来,SharedReference是最合适的,因为它只是一个简短的列表。通常它是空的,或者只包含几个值

我已经看到了基本相同的问题,答案是不合适的,因为StringSet是API级别11,我的目标是Android 2.1及以上版本,即API 7

考虑到字符串列表通常很小,使用数据库对我来说似乎完全是过火了。使用文件来存储这将是另一种解决方案,但不是那么优雅。我曾考虑过创建键(如“1”、“2”、“3”等),但这实际上比使用文件更糟糕,尤其是在读回数据时


无论如何,如果没有其他工作,我将不得不选择文件选项。如果我的想法是使用API lvl 7的SharedReferences不实用,我也很高兴听到这个消息。

如果您知道列表项的顺序和/或无所谓,您可以使用您选择的分隔符将它们“粘合”成一个字符串,然后将其存储在
SharedReferences
中。加载回来后,您将根据分隔符将字符串拆分为条目。类似于
stringlistentries=“enty1;entry2;entry3”
(在本例中分号作为分隔符)。但是不知道性能问题。

我发现从SharedReferences存储和检索项目列表最简单的解决方案是将数组序列化/反序列化为JSON,并将其存储到字符串设置中

Gson做这件事真的很方便

阅读:

写:

String value = gson.toJson(list);
SharedPreferences prefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
Editor e = prefs.edit();
e.putString("list", value);
e.commit();
使用这个对象非常简单

TinyDB tinydb = new TinyDB(context);
放置

tinydb.putList("MyUsers", mUsersArray);
得到

tinydb.getList("MyUsers");

这个怎么了。将集合序列化为字符串并放入SharedReferences中。顺序无关紧要。基本上与存储在文件中时的想法相同,但这确实有点干净。会考虑的!一定有更好的办法,对吧?任何人布勒。。。布勒?唉,我可能不得不这样做(太老派了!)。你也可以使用JSONObject/JSONArray,它默认包含在Android中,因此不需要额外的LIB。需要紧急帮助,如何从共享首选项获取列表!直接到列表@DrejcHow定义MyObject类!好啊你跳得比你自己快。首先确保您尝试从首选项写入/读取的类可以序列化/反序列化为JSON-该类本身应该是一个简单的值保持类(没有任何内部逻辑)。阅读Gson的JSON序列化。一旦你有了数组MyObject[],你就可以将它转换成一个带有数组的列表。asList()但是getList在另一个类中如何使用?只需使用保存它时使用的相同键即可。只要是同一个应用程序,你在哪个班级并不重要。那只是。。。电子战。它用一个它认为永远不会使用的键连接数组。电子战。
tinydb.getList("MyUsers");