我将历史记录项(单词)保存到SharedPreferences,并且可以很好地加载历史记录以在ListView中查看。然后,我使用这些代码行从ListView中删除特定项目:
@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
}
从ListView中定义删除所选项目,但不会从保存它的SharedPreferences中删除它。因此,当重新加载Listview时,该项目仍然存在。
我的问题是:如何编码以从SharePreferences中删除所选项目?我的意思是如何从ListView和SharedPreferences中删除所选项目?
如果您可以根据我的代码提供说明,那就太好了,因为我对Android很新。非常感谢你。
答案 0 :(得分:4)
要清除共享偏好,请使用
editor.clear();
editor.commit();
如果,我的问题是正确的。要检查值是否存储在sharedpreferences中,请执行此操作
SharedPreferences mySharedPrefs = getSharedPreferences("MyPreferences", 0);
if(mySharedPrefs.contains("theKey")) {
SharedPreferences.Editor editor = settings.edit();
editor.remove("thekey");
editor.commit();
}
答案 1 :(得分:2)
试试这个
editor.remove("UserName");
editor.clear();
editor.putString("history",strHistory);
editor.commit();
答案 2 :(得分:0)
我找到了解决方案。 基本上,您需要做的是从列表视图中删除该特定项目,然后再次在 sharedpreference 中添加该更新后的列表,以便它覆盖共享首选项。
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
addPlace.remove(i);
arrayAdapter.notifyDataSetChanged();
try {
sharedPreferences.edit().putString("places", ObjectSerializer.serialize(MainActivity.addPlace)).apply(); add the updated shared pref again that will override previous saved.
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
});