Поместить и получить массив String из общих настроек
Мне нужно сохранить на общих настройках некоторый массив строк и после этого получить их.
Я пробовал это:
prefsEditor.putString(PLAYLISTS, playlists.toString());
, где плейлисты - это String[]
и получить:
playlist= myPrefs.getString(PLAYLISTS, "playlists");
, где плейлист является String
, но он не работает.
Как я могу это сделать? Кто-нибудь может мне помочь?
Спасибо заранее.
Ответы
Ответ 1
Вы можете создать собственное строковое представление массива следующим образом:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < playlists.length; i++) {
sb.append(playlists[i]).append(",");
}
prefsEditor.putString(PLAYLISTS, sb.toString());
Затем, когда вы получаете String из SharedPreferences, просто проанализируйте его следующим образом:
String[] playlists = playlist.split(",");
Это должно выполнить эту работу.
Ответ 2
С уровня 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);
Ответ 3
Вы можете использовать JSON для сериализации массива в виде строки и сохранения его в настройках. См. Мой ответ и пример кода для аналогичного вопроса здесь:
Как написать код для создания sharedpreferences для массива в android?
Ответ 4
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";