如何使用此代码添加数组并在以后检索? 我可以使用简单的for循环吗?
SharedPreferences settings = getSharedPreferences("isChk", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("keys",ArrayValue[i] );
editor.commit();
然后如何检索它们并将每个元素存储在数组变量中?我可以使用它吗?
for( int i=0; i<myArr.size(); i++){
keys[i] = settings.getBoolean("isChk", false);
isChkb.add(keys[i]);
}
答案 0 :(得分:2)
以下是在共享首选项中保存数组的方法
public static boolean saveTheArray()
{
SharedPreferences sharedpref = SharedPreferences.getDefaultSharedPreferences(this);
SharedPreferences.Editor mEdit1 = sharedpref .edit();
mEdit1.putInt("Status_size", array.size()); //array-> the array to be saved
for(int i=0;i<array.size();i++)
{
mEdit1.remove("Status_" + i);
mEdit1.putString("Status_" + i, array.get(i));
}
return mEdit1.commit();
}
要检索它,请使用以下代码:
public static void loadArray(Context mContext)
{
SharedPreferences mShrdPref = PreferenceManager.getDefaultSharedPreferences(mContext);
array.clear();
int size = mShrdPref.getInt("Status_size", 0);
for(int i=0;i<size;i++)
{
array.add(mShrdPref.getString("Status_" + i, null));
}
}
希望有所帮助:)
答案 1 :(得分:2)
要在array
中存储sharedPreferences
,您可以将array values
放入String
,然后存储此String
..如果您想获得array value
(在我们的情况下,存储在字符串中),您 string
和parse
使用{ {1}}像这样:(在我的例子中,我将存储和检索布尔数组)
将您的布尔值放入一个字符串中,用字符(例如逗号)分隔每个int,然后将它们保存为字符串:
StringTokenizer
获取字符串并使用StringTokenizer解析它:
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
Boolean[] list = new Boolean[10];
StringBuilder str = new StringBuilder();
for (int i = 0; i < list.length; i++) {
str.append(list[i]).append(",");
}
prefs.edit().putBoolean("keys", str.toString()).commit();
答案 2 :(得分:0)
使用键名而不是isChk
来获取SharedPreferences
的键值,因为isChk
是SharedPreferences名称:
keys[i] = settings.getBoolean("keys", false);
此外,您使用相同的键keys
保存所有值,这样您只能获得已添加的最后一个值。存储所有值使用"keys"+i
等唯一键。
有关我们如何在SharedPreferences中添加Array的更多信息,请参阅以下文章: