Intereting Posts
Как создать анимацию цикла с помощью ViewPropertyAnimator? Android: заполнить прядильщик из strings.xml Как получить мобильный номер текущей сим-карты в реальном устройстве? Длинный текст переходит к следующей строке на ICS, но не на GB и ниже Каковы десять самых смертоносных разрешений? Клавиатура скрывает EditTexts во фрагментах Android NDK: что я должен установить в Application.mk для APP_ABI? Как прочитать содержимое файла из внутреннего хранилища – приложение для Android Я использую traceView, и я вижу android.view.ViewRoot.handleMessage 76.4% VideoView не запускается, когда невидимый Невозможно сделать покупку Android в приложении с тестовой учетной записью «Издатель не может купить этот товар» Как открыть альбом в приложении «Галерея», используя намерение Как отключить диалог «сохранить пароль» в Android WebView? Виртуальное устройство Android Studio на виртуальной машине Windows 7 не совместимо SparseArray, проверьте, существует ли ключ

Android SharedPreferences putStringSet order / sort

Я пытаюсь сохранить / восстановить набор строк, и все работает, кроме одного. Когда я создаю свои строки, я ставил:

Set<String> set = new HashSet<String>(); for(int i=0; i<toggles.size();i++){ set.add(toggles.get(i).serialise()); } 

Заказ – это, например, «blutooth» «application» «data». Когда я вернусь:

 Set<String> set = prefs.getStringSet(key, new HashSet<String>()); for (String toggle : set){ Toggle t = new Toggle(); t.deserialize(toggle); toggles.add(t); } 

Я получаю «приложение» «bluetooth» «данные», они сортируются по имени, и я не хочу этого. Я хочу получить тот же порядок, который у меня есть. Кто-нибудь может мне помочь?

Solutions Collecting From Web of "Android SharedPreferences putStringSet order / sort"

Это невозможно. Наборы представляют собой неупорядоченные коллекции.

Вы можете префикс своих строк по номерам, например, 00application , 01bluetooth , 02data , в том порядке, в котором вы хотите их получить. Поместите Set<String> возвращенный из getStringSet в Array<Set> и отсортируйте его.

 Set<String> set = prefs.getStringSet(key, new HashSet<String>()); Array<String> a = set.toArray(); java.util.Arrays.sort(a); 

Вы можете сохранить список строк в виде одной строки с разделителем. Например, это ваш массив:

 ["Italy", "France", "Spain", "Japan", "United States"] 

Вы можете сохранить его как:

 "Italy;France;Spain;Japan;United States" 

В коде:

 SharedPreferences sharedPref = mContext.getSharedPreferences(PREF_KEY, Context.MODE_PRIVATE); Editor editor = sharedPref.edit(); // countries is your List String countriesString = TextUtils.join(";", countries); editor.putString("countries", countriesString); editor.apply(); 

Чтобы получить данные:

 final String countriesString = sharedPref.getString("countries", ""); List<String> countries = new ArrayList<>(); if (!countriesString.isEmpty()){ countries = new ArrayList<>(Arrays.asList(countriesString.split(";"))); }