Wou*_*ter 20 android list sharedpreferences
我的应用程序有一个字符串值列表(每个约5-20个字符),我必须持久存储.在我看来,SharedPreferences是最合适的,因为它是一个简短的列表.通常它是空的,或只包含几个值.
我已经看到这个问题基本相同,答案是不合适的,因为StringSet是API级别11,我的目标是Android 2.1及以上,即API 7.
考虑到通常很小的字符串列表,使用数据库对我来说似乎完全过分.使用文件存储这将是另一种解决方案,但不是那么优雅.我考虑过创建密钥(比如"1","2","3"等),但这实际上比使用文件更糟糕 - 特别是在回读我的数据时.
无论如何,如果没有其他工作,我将不得不去找文件选项.如果使用SharedLreferences for API lvl 7,我的想法根本不可行,我也很感激听到这一点.
Dre*_*ejc 30
我发现从SharedPreferences中存储和检索项目列表的最简单的解决方案是简单地将数组序列化/去除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);
Run Code Online (Sandbox Code Playgroud)
写:
String value = gson.toJson(list);
SharedPreferences prefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
Editor e = prefs.edit();
e.putString("list", value);
e.commit();
Run Code Online (Sandbox Code Playgroud)
kc *_*ili 18
使用这个对象 - > TinyDB - Android-Shared-Preferences-Turbo 非常简单.
TinyDB tinydb = new TinyDB(context);
Run Code Online (Sandbox Code Playgroud)
放在
tinydb.putList("MyUsers", mUsersArray);
Run Code Online (Sandbox Code Playgroud)
要得到
tinydb.getList("MyUsers");
Run Code Online (Sandbox Code Playgroud)
如果您知道列表条目的顺序和/或无关紧要,您可以将它们全部"粘合"到一个带有您选择的分隔符的String中,然后将其存储起来SharedPreferences.加载后,您可以根据分隔符将String拆分为条目.像String listEntries = "enty1;entry2;entry3"(在这种情况下分号作为分隔符).但不知道性能问题.
| 归档时间: |
|
| 查看次数: |
21869 次 |
| 最近记录: |