我的应用程序有一个字符串值列表(每个字符串值约5-20个字符),我必须永久存储它们。在我看来,SharedPreferences最合适,因为它很短。通常它将为空,或仅包含几个值。
我已经看过this question,它的要求基本相同,答案不适合,因为StringSet是API级别11,并且我的目标是Android 2.1及更高版本,即API 7。
考虑到通常很小的字符串列表,使用数据库对我来说似乎完全过头了。使用文件存储此文件将是另一种解决方案,但并不那么优雅。我曾经考虑过创建键(例如“1”,“2”,“3”等),但这实际上比使用文件要差,尤其是在读回我的数据时。
无论如何,如果没有其他效果,我将不得不使用file选项。如果使用API lvl 7的SharedPreferences我的想法根本不可行,我也很高兴听到这个消息。
最佳答案
我发现从SharedPreferences中存储和检索项目列表的最简单解决方案是,简单地将数组序列化/反序列化为JSON,或从JSON中反序列化,然后将其存储为字符串设置。
Gson非常方便。
读:
SharedPreferences prefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
String value = prefs.getString("list", null);
GsonBuilder gsonb = new GsonBuilder();
Gson gson = gsonb.create();
MyObject[] list = gson.fromJson(value, MyObject[].class);
写:
String value = gson.toJson(list);
SharedPreferences prefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
Editor e = prefs.edit();
e.putString("list", value);
e.commit();