Вопрос по android – Хранение массива String в SharedPreferences

9

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

Например, у меня есть список мест с определенным идентификатором, который я хочу отметить как избранное. В идеальном случае, имея массив и сохраняя определенный идентификатор местоположения (пусть назовем его Location1) в этом массиве, поэтому в следующий раз, когда я захочу пометить новое местоположение в качестве избранного (пусть назовем его Location2), я получу этот массив (который пока содержит Location1) и добавьте идентификатор этого нового местоположения, которое я хочу добавить (Location2).

В Android есть методы для хранения примитивных объектов, но не для массивов. Любая идея, чтобы сделать это, пожалуйста?

AFAIK использует общие предпочтения для типа данных примитивов Samir Mangroliya
stackoverflow.com/questions/7873682/… Lalit Poptani

Ваш Ответ

3   ответа
1

олжно быть слишком сложным. Просто сведите массив строк в одну строку, которую вы храните в настройках. Другой вариант - преобразовать массив в структуру XML, которую вы затем сохраните в настройках, но это, вероятно, излишне.

23

Я просто писал об этом:

SAVE YOUR ARRAY

//String array[]
//SharedPreferences prefs
Editor edit = prefs.edit();
edit.putInt("array_size", array.length);
for(int i=0;i<array.length; i++)
    edit.putString("array_" + i, array[i]);
edit.commit();

RETRIEVE YOUR ARRAY

int size = prefs.getInt("array_size", 0);
array = new String[size];
for(int i=0; i<size; i++)
    prefs.getString("array_" + i, null);

Только что написал, что могут быть опечатки.

Error: User Rate Limit Exceeded noloman
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededstackoverflow.com/questions/7057845/…
Error: User Rate Limit Exceededstackoverflow.com/questions/7057845/…
15

а затем сохранить его следующим образом:

SharedPreferences settings = getSharedPreferences("SETTINGS KEY", 0);
SharedPreferences.Editor editor = settings.edit();

JSONArray jArray = new JSONArray();
try {
    jArray.put(id);
} catch (JSONException e) {
    e.printStackTrace();
}

editor.putString("jArray", jArray.toString());
editor.commit();

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

SharedPreferences settings = getSharedPreferences("SETTINGS KEY", 0);
try {
    JSONArray jArray = new JSONArray(settings.getString("jArray", ""));
} catch (JSONException e) {
    e.printStackTrace();
}

Просто альтернативное решение, которое я использовал в прошлом

Похожие вопросы