从ArrayList获取字符串并保存在共享首选项中

时间:2013-03-28 09:12:47

标签: android arraylist

我有一个可以包含1到15个字符串的ArrayList。这些字符串需要保存在我的共享首选项中,现在我知道如何通过数组迭代来获取字符串。我不知道的是,有一种干净的方法可以动态地将字符串添加到我的共享首选项文件中吗?我可以通过创建15个字符串并使用if语句填充共享首选项来缓慢地执行此操作,但我想知道是否有更好的方法。

谢谢。

3 个答案:

答案 0 :(得分:5)

您可以使用putStringSet中提供的SharedPreferences.Editor方法来存储字符串数组。例如:

String[] array = new String[]{"this", "is", "a", "string", "array"};
SharedPreferences.Editor edit = sharedPrefs.edit();
edit.putStringSet("myKey", new HashSet<String>(Arrays.asList(array)));
edit.commit();

如果您的API低于11 ,那么您可以将字符串数组转换为单个字符串并将其保存为普通字符串。例如:

edit.putString("myKey", TextUtils.join(",", array));

以后使用以下内容从字符串重建数组:

array = TextUtils.split(sharedPrefs.getString("myKey", null), ",");

答案 1 :(得分:5)

如果是关于命名,可以使用以下内容:

public static final String mPrefix = "mArray";
SharedPreferences prefs;
prefs  = this.getSharedPreferences("PREF", 0);
prefsEditor = appSharedPrefs.edit();

//mAL is your ArrayList

for(int i=0; i<mAl.size(); i++){

prefsEditor.putString(mPrefix + "-" + i, mAl.get(i));
}
prefsEditor.commit();

答案 2 :(得分:1)

主要是编辑从中获取编辑器对象所需的共享首选项数据,以便您可以自由编辑它以便将数据放入其中:

SharedPrefernces preferences = mContext.getSharedPreferences(MODE_PRIVATE);
Editor prefEditor = preferences.edit();
prefEditor.putString("this is a key object","this is value of the key");

你也可以放入不同类型的对象,例如:boolean,int,float,double等.... 只需在android开发者网站中查找编辑器类......

为了从sharedPrefrences读取数据,它更加简单

SharedPrefrences pref = mContext.getSharedPreferences(MODE_PRIVATE);
pref.getString("the key of the value");