我在想,如果它可能是能够在共享的喜好来保存一个字符串数组,在这,我们每次保存一定时间的字符串,我们把它存储阵列的方式。
例如,我有我想要标记为收藏具有一定的ID位置的列表。 理想的情况是,有一个数组,数组中保存了一定的位置ID(我们称之为LOCATION1),所以下一次我要标记的新位置为最喜欢的(姑且称之为LOCATION2),我检索数组(到目前为止包含LOCATION1),并添加这个新的位置,我想补充(LOCATION2)的ID。
Android有方法来存储原始的对象,而不是阵列。 为了任何想法要做到这一点,好吗?
编写方法来读取和写入一个序列化的阵列。 这应该不是太困难。 只是字符串数组拼合到您的喜好存储一个字符串。 另一种选择是将数组转换为XML的结构,然后你在首存储转换,但可能是矫枉过正。
这是可行的: 我只是写博客吧 :
保存您的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);
只是写道,所以有可能是拼写错误。
你可以做数组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();
}
只是,我在过去使用的替代解决方案