Поставь и получи массив String из общих настроек - PullRequest
53 голосов
/ 01 ноября 2011

Мне нужно сохранить в общих настройках некоторый массив строк и после этого получить их. Я попробовал это:

prefsEditor.putString(PLAYLISTS, playlists.toString()); где плейлисты String[]

и получить:

playlist= myPrefs.getString(PLAYLISTS, "playlists");, где список воспроизведения является String, но он не работает.

Как я могу это сделать? Кто-нибудь может мне помочь?

Заранее спасибо.

Ответы [ 5 ]

89 голосов
/ 01 ноября 2011

Вы можете создать свое собственное строковое представление массива следующим образом:

StringBuilder sb = new StringBuilder();
for (int i = 0; i < playlists.length; i++) {
    sb.append(playlists[i]).append(",");
}
prefsEditor.putString(PLAYLISTS, sb.toString());

Затем, когда вы получите строку из SharedPreferences, просто проанализируйте ее следующим образом:

String[] playlists = playlist.split(",");

Это должно сделать работу.

25 голосов
/ 26 марта 2015

На уровне 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);
8 голосов
/ 01 ноября 2011

Вы можете использовать JSON для сериализации массива в виде строки и сохранения его в настройках. Смотрите мой ответ и пример кода для аналогичного вопроса здесь:

Как написать код для создания общих настроек для массива в Android?

0 голосов
/ 28 февраля 2019

Сохранение списка массивов в предпочтениях с помощью этой простой функции, если вам нужна дополнительная информация Нажмите здесь

 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;
}
0 голосов
/ 23 декабря 2017
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";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...