2012-05-31 50 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中删除的项目,但删除的项目可以是列表中的任何单词。 –

相关问题