我需要在共享首选项上保存一些字符串数组,然后才能获取它们。 我试过这个:
prefsEditor.putString(PLAYLISTS, playlists.toString());
其中播放列表为String[]
并得到:
playlist= myPrefs.getString(PLAYLISTS, "playlists");
其中播放列表是String
,但它无效。
我该怎么做?任何人都可以帮助我吗?
提前致谢。
答案 0 :(得分:87)
您可以像这样创建自己的数组的String表示:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < playlists.length; i++) {
sb.append(playlists[i]).append(",");
}
prefsEditor.putString(PLAYLISTS, sb.toString());
然后当您从SharedPreferences获取String时,只需解析它:
String[] playlists = playlist.split(",");
这应该可以胜任。
答案 1 :(得分:25)
从API级别11,您可以使用putStringSet和getStringSet来存储/检索字符串集:
SharedPreferences pref = context.getSharedPreferences(TAG, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putStringSet(SOME_KEY, someStringSet);
editor.commit();
SharedPreferences pref = context.getSharedPreferences(TAG, Context.MODE_PRIVATE);
Set<String> someStringSet = pref.getStringSet(SOME_KEY);
答案 2 :(得分:8)
您可以使用JSON将数组序列化为字符串并将其存储在首选项中。请在此处查看我的答案和示例代码以获得类似问题:
How can write code to make sharedpreferences for array in android?
答案 3 :(得分:0)
HashSet<String> mSet = new HashSet<>();
mSet.add("data1");
mSet.add("data2");
saveStringSet(context, mSet);
,其中
public static void saveStringSet(Context context, HashSet<String> mSet) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = sp.edit();
editor.putStringSet(PREF_STRING_SET_KEY, mSet);
editor.apply();
}
和
public static Set<String> getSavedStringSets(Context context) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
return sp.getStringSet(PREF_STRING_SET_KEY, null);
}
private static final String PREF_STRING_SET_KEY = "string_set_key";
答案 4 :(得分:0)
如果需要更多信息,请使用此简单功能将数组列表存储在优先位置Click here
public static void storeSerializeArraylist(SharedPreferences sharedPreferences, String key, ArrayList tempAppArraylist){
SharedPreferences.Editor editor = sharedPreferences.edit();
try {
editor.putString(key, ObjectSerializer.serialize(tempAppArraylist));
editor.apply();
} catch (IOException e) {
e.printStackTrace();
}
}
以及如何从优先获取存储的数组列表
public static ArrayList getSerializeArraylist(SharedPreferences sharedPreferences, String key){
ArrayList tempArrayList = new ArrayList();
try {
tempArrayList = (ArrayList) ObjectSerializer.deserialize(sharedPreferences.getString(key, ObjectSerializer.serialize(new ArrayList())));
} catch (IOException e) {
e.printStackTrace();
}
return tempArrayList;
}