2

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

谢谢你。

4

3 回答 3

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), ",");
于 2013-03-28T09:17:04.063 回答
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();
于 2013-03-28T09:21:23.843 回答
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");
于 2013-03-28T09:25:25.203 回答