2015-12-30 2 views
1

У меня есть 3 ArrayList объектов, я хочу сохранить их в приложении Android, и я хочу их получить, когда приложение запущено.Общие настройки для хранения arraylist в android

Кроме того, я хочу такой же порядок элементов, как их в ArrayList Должен ли я пойти с SharedPreferences или является их любой другой подход для достижения этой цели.

Когда я пытаюсь использовать его с помощью SharedPreferences, он использует HashSet, и при этом порядок ArrayList отличается во время его получения.

Скажите, как мне достичь этого, не нарушая порядок?

+5

Возможный дубликат [Сохранить ArrayList в SharedPreferences] (http://stackoverflow.com/questions/7057845/save-arraylist-to-sharedpreferences) – apmartin1991

+0

как его сохранить, можете ли вы рассказать мне пример кода для этого –

+0

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

ответ

1

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

ArrayList<String> arr = new ArrayList<>(); 
    arr.add("cat"); 
    arr.add("dog"); 
    arr.add("bird"); 

    // Convert the ArrayList into a String. 
    String res = String.join(",", arr); 

теперь сохраняют res в настройках

, а retriving разделить его с помощью "," и получить тот же порядок. Неэффективно, но решит проблему.

2

Если вы уже используете gson в проекте, вы можете преобразовать этот список строк в json-объект и поместить его в sharedpreference как обычную строку, и когда вы извлечете эту строку из преференции, переведите ее обратно в ArrayList. Мне это очень легко.

private List<String> searchHistoryList; 
Type listType = new TypeToken<ArrayList<String>>() { // object can be String here 
      }.getType(); 
String previousHistory = sp.getString("KEY"); 
      searchHistoryList = new Gson().fromJson(previousHistory, listType); 

Я успешно использовал это в одном из моих проектов и, похоже, работает нормально, даже если есть Объект. MAke обязательно добавьте нулевую проверку, если это необходимо.

Смежные вопросы