2016-09-09 4 views
0

Я пытался хранить стек в SharedPreferences в виде набора через API putStringSet в SharedPreferences.Как хранить стек в SharedPreferences

В методе записи, я делаю это: putStringSet(KEY, new LinkedHashSet(stack));

Когда я читаю, я делаю это: getStringSet(KEY, null) в Set.

Я меняю элементы в наборе путем преобразования в список с помощью Collections.reverse(list) и всех элементов в стек.

Замечательно, когда я пишу в SharedPreferences, но порядок элементов полностью перепутался, когда я прочитал.

Любые идеи?

+0

Какой тип элементов в стеке? –

+0

У меня есть только строки в стеке – sr09

+0

, когда вы читаете, почему бы вам не поместить их в LinkedHashSet вместо Set, делая это, вы можете сохранить вставленный заказ. – Lazai

ответ

4

Вы можете преобразовать элементы стека в строку, разделенную запятой, а затем использовать putString для ее сохранения.

Например, если ваш стек содержит следующее:

| "4" | 
| "3" | 
| "2" | 
| "1" | 
| "0" | 
------- 

Вы должны преобразовать его в строку «0,1,2,3,4» и сохранить его в SharedPreferences.

Чтобы перестроить ваш стек, получите строку из SharedPreferences, разделите ее на разделитель запятой и нажмите на нее, чтобы стек.

+0

Да, я собирался опубликовать это как ответ! благодаря – sr09

1

SharedPreferences, вероятно, не лучшее решение. Вам будет лучше обслуживать плоский файл или базу данных. С учетом сказанного вы могли бы это сделать, сохраняя значения индивидуально и программно генерируя ключ для каждого элемента.