store Array in sharedpreferences

家住魔仙堡 提交于 2019-12-24 10:03:36

问题


I have an Array with integer values. It will grow over time. It will have approximately up to 50 values. I want to store the array persistent and thus I thought about storing it in SharedPreferences. I know that no complex types can be stored in it, but I also heard about to serialise the Array and then store it in SharedPreferences. Can someone give me a hint or even better sample code how to do that?


回答1:


Not very efficient way, but will get the job done:

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();

Then later you can retrieve these values by grabbing the KEY_COUNT value from the prefs, then filling your empty array with values2[i] = getInt(KEY_VAL_PREFIX + i, 0) calls.




回答2:


You may use ObjectSerializer to do it. Here is SO discussion on how to do.Store Shared preferences




回答3:


I would convert your array to a string of values separated by commas. And then store the string as a single key-value pair.

Then, when you want to extract the array, simple use the split function to split the string up into array elements based on a comma separator.



来源:https://stackoverflow.com/questions/8714579/store-array-in-sharedpreferences

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!