1

我将 History 项目(单词)保存到 SharedPreferences,并且 History 已很好地加载以在 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 还很陌生。非常感谢你。

4

3 回答 3

4

要清除共享偏好,请使用

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

另外,如果我正确地回答了您的问题。要检查某个值是否存储在共享首选项中,请执行此操作

SharedPreferences mySharedPrefs = getSharedPreferences("MyPreferences", 0);
                if(mySharedPrefs.contains("theKey")) {
SharedPreferences.Editor editor = settings.edit();
                editor.remove("thekey");
                editor.commit();
}
于 2012-05-31T12:09:51.887 回答
2

试试这个

editor.remove("UserName");
editor.clear();
editor.putString("history",strHistory);   
editor.commit();
于 2012-05-31T12:14:49.383 回答
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;
        }
    });
于 2021-01-15T09:57:40.577 回答