我希望,在一个活动中,将字符串放入共享首选项中,然后,在另一个活动中,我获取这些字符串,将它们放入数组中并按顺序显示它们。我设法做到了这一点,但我不知道如何在被问到时删除一个指定的字符串。这些字符串将分散在共享首选项上,我不知道如何跟踪它们。我可以将这个唯一的int id传递给每个元素。我试图使用LinkedList,但我不能将这种结构作为共享首选项传递。我没有成功让Gson工作。请帮忙。
获取字符串并放入共享首选项的方法:
public void makefavorites(String[] a, String[] b, int id)
{
int idfinal = id%10;
idfinal = idfinal+1;
a[idfinal] = b[idfinal] +"\n" + "\n"+ a[idfinal];
SharedPreferences prefs = getSharedPreferences("Favorites", Activity.MODE_PRIVATE);
Editor edit = prefs.edit();
int temp = prefs.getInt("favorites_size", 0);
edit.putInt("favorites_size", temp+1);
edit.putString("array_" + prefs.getInt("favorites_size", 0), a[idfinal]);
edit.commit();
refreshfavorites();
}
获取这些字符串,放在数组上并显示它的方法:
public void refreshfavorites()
{
SharedPreferences prefs = getSharedPreferences("Favorites", Activity.MODE_PRIVATE);
//GETS THE ARRAY SIZE
int size = prefs.getInt("favorites_size", 0);
String[] array = new String[size];
for(int i=0; i<size; i++){
array[i] = prefs.getString("array_" + i, null);
}
}
答案 0 :(得分:1)
你必须使用 editor.remove 方法从arraylist中删除特定值..
public void removeArray(String[] list)()
{
SharedPreferences.Editor editor = mSharedPrefs.edit();
int size = list.length();
for (int i = 0; i < size; i++) {
editor.remove("favorites_size"+i);
}
editor.commit();
}
我希望它对你有用..