2012-05-31 72 views
1

我將歷史記錄項(單詞)保存到SharedPreferences中,並且歷史記錄已裝載好以在ListView中查看。然後我使用這些代碼行從ListView中刪除指定的項目:如何從ListView和SharedPreferences中刪除特定項目?

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
    switch (item.getItemId()) { 
     case R.id.edit: 
      editNote(info.id); 
      return true; 
     case R.id.delete: 
      String content = (String) mLSTHistory.getItemAtPosition(info.position); 
       aptList.remove(content); 
       aptList.notifyDataSetChanged(); 
      deleteNote(info.id); 
      return true; 
     default: 
      return super.onContextItemSelected(item); 
    } 
} 
private void deleteNote(long id) { 
    // TODO Auto-generated method stub 
    if (prefs.getBoolean("saveHistory", true) && mWordHistory != null && mWordHistory.size() >= 1) 

    prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
    StringBuilder sbHistory = new StringBuilder(); 
    for (String item : mWordHistory) 
    { 
     sbHistory.append(item); 
     sbHistory.append(","); 

    String strHistory = sbHistory.substring(0, sbHistory.length()-1); 
    SharedPreferences.Editor editor = prefs.edit(); 
    //editor.remove(content); 
    editor.putString("history", strHistory); 
    editor.commit(); 
    } 
} 
private void editNote(long id) { 
    // TODO Auto-generated method stub 

} 

選定的項目definetely從ListView中刪除,但它不是從它被保存SharedPreferences刪除。因此,當Listview重新加載時,該項目仍然存在。

我的問題是:我該如何編碼從SharePreferences中刪除所選項目?我的意思是如何從ListView和SharedPreferences中刪除選定的項目?

如果您可以提供基於我的代碼的說明,這是非常好的,因爲我對Android非常陌生。非常感謝你。

回答

4

要清除共享prefrences,使用

editor.clear(); 
editor.commit(); 

而且如果我正確了你的問題。要檢查值存儲在共享偏好,這樣做

SharedPreferences mySharedPrefs = getSharedPreferences("MyPreferences", 0); 
       if(mySharedPrefs.contains("theKey")) { 
SharedPreferences.Editor editor = settings.edit(); 
       editor.remove("thekey"); 
       editor.commit(); 
} 
+0

非常感謝你。我的問題是如何定義'theKey',它是從ListView中刪除的項目。此項可以是ListView中顯示的任何單詞。那麼如何告知SharedPreferences這個項目? –

+0

定義首選項的值很簡單。你使用'editor.putString(key,value);'將一個鍵賦值給一個正確的值?如上面的代碼,我們正在檢查首選項是否確實包含首選項/值。閱讀這個http://developer.android.com/reference/android/content/SharedPreferences.Editor.html#remove(java.lang.String)和這個http://developer.android.com/reference/android/content/ SharedPreferences.html#包含(java.lang.String)以獲得更多說明。如果這對你有幫助,請接受答案。謝謝 – Wesley

+0

雖然我還沒有把我的問題整理出來,但我認爲這是我有限的Java知識的責任。無論如何,你的支持是一個答案。謝謝。 –

2

試試這個

editor.remove("UserName"); 
editor.clear(); 
editor.putString("history",strHistory); 
editor.commit(); 
+0

@Dipak Keshariya:非常感謝。我認爲我的問題是如何定義「UserName」。我的意思是這裏的UserName是從ListView中刪除的項目,但刪除的項目可以是列表中的任何單詞。 –

相關問題