将字符串传递到列表并使用共享首选项删除它们

时间:2014-02-24 03:11:38

标签: android linked-list sharedpreferences

我希望,在一个活动中,将字符串放入共享首选项中,然后,在另一个活动中,我获取这些字符串,将它们放入数组中并按顺序显示它们。我设法做到了这一点,但我不知道如何在被问到时删除一个指定的字符串。这些字符串将分散在共享首选项上,我不知道如何跟踪它们。我可以将这个唯一的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);
    }
}

1 个答案:

答案 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();
 }

我希望它对你有用..