存储在所述SharedPreferences一个字符串数组(Storing a String arr

2019-06-24 23:52发布

我在想,如果它可能是能够在共享的喜好来保存一个字符串数组,在这,我们每次保存一定时间的字符串,我们把它存储阵列的方式。

例如,我有我想要标记为收藏具有一定的ID位置的列表。 理想的情况是,有一个数组,数组中保存了一定的位置ID(我们称之为LOCATION1),所以下一次我要标记的新位置为最喜欢的(姑且称之为LOCATION2),我检索数组(到目前为止包含LOCATION1),并添加这个新的位置,我想补充(LOCATION2)的ID。

Android有方法来存储原始的对象,而不是阵列。 为了任何想法要做到这一点,好吗?

Answer 1:

编写方法来读取和写入一个序列化的阵列。 这应该不是太困难。 只是字符串数组拼合到您的喜好存储一个字符串。 另一种选择是将数组转换为XML的结构,然后你在首存储转换,但可能是矫枉过正。



Answer 2:

这是可行的: 我只是写博客吧 :

保存您的ARRAY

//String array[]
//SharedPreferences prefs
Editor edit = prefs.edit();
edit.putInt("array_size", array.length);
for(int i=0;i<array.length; i++)
    edit.putString("array_" + i, array[i]);
edit.commit();

检索您的ARRAY

int size = prefs.getInt("array_size", 0);
array = new String[size];
for(int i=0; i<size; i++)
    prefs.getString("array_" + i, null);

只是写道,所以有可能是拼写错误。



Answer 3:

你可以做数组JSON数组,然后将其存储这样的:

SharedPreferences settings = getSharedPreferences("SETTINGS KEY", 0);
SharedPreferences.Editor editor = settings.edit();

JSONArray jArray = new JSONArray();
try {
    jArray.put(id);
} catch (JSONException e) {
    e.printStackTrace();
}

editor.putString("jArray", jArray.toString());
editor.commit();

然后,您可以得到这样的数组:

SharedPreferences settings = getSharedPreferences("SETTINGS KEY", 0);
try {
    JSONArray jArray = new JSONArray(settings.getString("jArray", ""));
} catch (JSONException e) {
    e.printStackTrace();
}

只是,我在过去使用的替代解决方案



文章来源: Storing a String array in the SharedPreferences