2012-01-03 2 views
1

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

+0

Вы также можете обратиться к этому [ANSWER] (http://stackoverflow.com/questions/7175880/how-can-i-store-an-integer-array-in-sharedpreferences) –

ответ

4

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

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 из префов, затем заполнить ваш пустой массив с values2[i] = getInt(KEY_VAL_PREFIX + i, 0) вызовов.

+0

: Как вы думаете, вы можете помогите мне с этим? http: //stackoverflow.com/questions/9209673/using-preferences-my-listview-is-empty-cant-store-data – George

+0

Я просто сделал, посмотри. – Josh

+0

@ Josh можете ли вы включить весь код для геттера и сеттера? – HeartlessArchangel

1

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

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