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

Android 将字符串传递给列表并使用共享首选项删除它们,android,linked-list,sharedpreferences,Android,Linked List,Sharedpreferences,我希望在一个活动中,将字符串放入SharedReferences,然后在另一个活动中,我获取这些字符串,将它们放入数组中,并按顺序显示它们。我成功地做到了这一点,但我不知道如何在被要求时删除一个指定的字符串。这些字符串将分散在共享首选项上,我不知道如何跟踪它们。我可以将这个唯一的int-id传递给每个元素。我尝试使用LinkedList,但无法将这种结构作为共享首选项传递。我没能让格森也工作。请帮忙 获取字符串并设置共享首选项的方法: public void makefavorites(Stri

我希望在一个活动中,将字符串放入SharedReferences,然后在另一个活动中,我获取这些字符串,将它们放入数组中,并按顺序显示它们。我成功地做到了这一点,但我不知道如何在被要求时删除一个指定的字符串。这些字符串将分散在共享首选项上,我不知道如何跟踪它们。我可以将这个唯一的int-id传递给每个元素。我尝试使用LinkedList,但无法将这种结构作为共享首选项传递。我没能让格森也工作。请帮忙

获取字符串并设置共享首选项的方法:

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);
    }
}
public void刷新收藏夹()
{
SharedReferences prefs=GetSharedReferences(“收藏夹”,Activity.MODE\u PRIVATE);
//获取数组大小
int size=prefs.getInt(“收藏夹大小”,0);
字符串[]数组=新字符串[大小];

对于(int i=0;i您必须使用编辑器。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();
 }
public void removeArray(字符串[]列表)()
{
SharedReferences.Editor=mSharedPrefs.edit();
int size=list.length();
对于(int i=0;i

我希望它对您有用。

为什么不使用
SharedReferences.Editor#putStringSet()
?但这将如何帮助我跟踪元素?因为您可以在共享首选项中存储
Set
。如果需要删除元素,可以调用
Set\remove()
然后存储更新的集合。对不起,我是编程新手。因此,我有我想要删除的字符串和一个ID,我可以用来标识这个字符串,但我不知道如何识别。我以后如何使用这个方法,删除一个只有该字符串或该ID作为数据的特定字符串?因此,我不知道如何将这个ID放在一起字符串如果你使用集合,那么你就不能使用ID。你需要ID吗?你的字符串是唯一的吗?谢谢!!看到你的代码,我想检查if中的每个元素是否是我要删除的字符串,只需删除它!谢谢!