sharedpreferences放一个数组

时间:2014-03-08 16:52:53

标签: java android sharedpreferences

如何使用此代码添加数组并在以后检索? 我可以使用简单的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]);
}

3 个答案:

答案 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(在我们的情况下,存储在字符串中),您 stringparse使用{ {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是Sha​​redPreferences名称:

keys[i] = settings.getBoolean("keys", false);

此外,您使用相同的键keys保存所有值,这样您只能获得已添加的最后一个值。存储所有值使用"keys"+i等唯一键。

有关我们如何在SharedPreferences中添加Array的更多信息,请参阅以下文章:

Save ArrayList to SharedPreferences