2012-01-03 60 views
1

我有一个整数值的数组。它会随着时间而增长。它将近50个值。 我想存储数组持久性,因此我想将它存储在sharedpreferences中。 我知道没有复杂的类型可以存储在其中,但我也听说过要序列化数组,然后将其存储在sharedpreferences中。 有人可以给我一个提示或更好的示例代码如何做到这一点?将数组存储在sharedpreferences中

+0

您也可以参考此答案(http://stackoverflow.com/questions/7175880/how-can-i-store-an-integer-array-in-sharedpreferences) – 2014-02-19 06:19:02

回答

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 2012-02-16 12:52:05

+0

我只是做了,看看。 – Josh 2012-02-17 12:19:42

+0

@Josh你可以包含getter和setter的整个代码吗? – HeartlessArchangel 2013-06-28 23:54:28

1

我会将您的数组转换为由逗号分隔的值的字符串。然后将字符串存储为单个键值对。

然后,当您想要提取数组时,只需使用split函数将字符串拆分为基于逗号分隔符的数组元素。