有没有办法从共享首选项中删除项目?

Is there a way to remove an item from sharedpreferences?

我有一个导航视图,我在其中以编程方式添加项目并保存它们,以便稍后在共享首选项中恢复。

我的问题是: 当我长按导航视图中的特定项目时,如何从共享首选项中删除特定项目?

这是我的代码:

    private void saveData() {
    SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREF_LIST_KEY, MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    Gson gson = new Gson();
    String json = gson.toJson(navItems);
    editor.putString(SHARED_PREF_LIST_KEY_ITEM, json);
    editor.apply();
}

    private void loadData() {
    SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREF_LIST_KEY, MODE_PRIVATE);
    Gson gson = new Gson();
    String json = sharedPreferences.getString(SHARED_PREF_LIST_KEY_ITEM, null);
    Type type = new TypeToken<ArrayList<NavItem>>() {
    }.getType();
    navItems = gson.fromJson(json, type);
    if (navItems == null) {
        navItems = new ArrayList<>();
    }
}

public class NavItem {
private String name;

public NavItem(String name) {
    this.name = name;
}

public String getName() {
    return name;
}

}

您可以创建一种新方法来删除特定项目,并在删除项目后将更新后的列表保存回共享首选项。

看下面的例子:

private void deleteData(NavItem item) {
    SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREF_LIST_KEY, MODE_PRIVATE);
    Gson gson = new Gson();
    String json = sharedPreferences.getString(SHARED_PREF_LIST_KEY_ITEM, null);
    Type type = new TypeToken<ArrayList<NavItem>>() {
}.getType();
    navItems = gson.fromJson(json, type);
    if (navItems! = null) {
        navItems.remove(item);
        saveData() ;// save the updated list to shared preferences 
    }
}

希望有帮助。