хранить Array в общих настройках - PullRequest
1 голос
/ 03 января 2012

У меня есть Array с целочисленными значениями.Это будет расти со временем.Он будет иметь приблизительно до 50 значений.Я хочу сохранить массив постоянным, и поэтому я подумал о его сохранении в SharedPreferences.Я знаю, что в нем нельзя хранить сложные типы, но я также слышал о сериализации Array и последующем сохранении в SharedPreferences.Может кто-нибудь дать мне подсказку или даже лучший пример кода, как это сделать?

Ответы [ 3 ]

4 голосов
/ 03 января 2012

Не очень эффективный способ, но он выполнит свою работу:

SharedPreferences prefs = ...;
final int count = 50;
final String KEY_COUNT = "COUNT";
final String KEY_VAL_PREFIX = "VAL_";
int values[] = new int[count];

/*
 * ... put some stuff in values[] ...
 */

final Editor sped = prefs.edit();
sped.putInt(KEY_COUNT, count);
for (int i = 0; i < count; i++)
{
    sped.putInt(KEY_VAL_PREFIX + i, values[i]);
}
sped.commit();

Затем вы можете получить эти значения, выбрав значение KEY_COUNT из prefs, а затем заполнив ваш пустой массив вызовами values2[i] = getInt(KEY_VAL_PREFIX + i, 0).

1 голос
/ 23 июля 2014

Я бы преобразовал ваш массив в строку значений, разделенных запятыми. А затем сохраните строку как одну пару ключ-значение.

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

1 голос
/ 03 января 2012

Вы можете использовать ObjectSerializer, чтобы сделать это.Вот ТАКОЕ обсуждение того, как это сделать. Сохранение общих настроек

...