2014-02-24 53 views
1

我希望在一個活動中將字符串放入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); 
    } 
} 
+0

爲什麼不使用'SharedPreferences.Editor#putStringSet()'http://developer.android.com/reference/android/content/SharedPreferences.Editor.html? –

+0

但這將如何幫助我跟蹤元素? –

+0

因爲您可以在共享首選項中存儲'Set '。如果你需要刪除一個元素,你可以調用'Set#remove()',然後存儲更新後的集合。 –

回答

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

我希望它對你有用..

+0

謝謝!看到你的代碼,我有想檢查if中的每個元素是否是我想要刪除的字符串,只是刪除它!謝謝! –