将数组存储在sharedpreferences中

时间:2012-01-03 15:32:48

标签: android arrays sharedpreferences persistent

我有一个Array的整数值。随着时间的推移它会增长。它将具有大约50个值。 我想将数组存储为持久性,因此我考虑将其存储在SharedPreferences中。 我知道其中不能存储任何复杂类型,但我也听说过将Array序列化,然后将其存储在SharedPreferences中。 有人可以给我一个提示甚至更好的示例代码怎么做?

3 个答案:

答案 0 :(得分: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();

然后,您可以通过从prefs获取KEY_COUNT值,然后使用values2[i] = getInt(KEY_VAL_PREFIX + i, 0)调用填充空数组来检索这些值。

答案 1 :(得分:1)

您可以使用ObjectSerializer来执行此操作。以下是关于如何做的SO讨论。Store Shared preferences

答案 2 :(得分:1)

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

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