是否可以从共享首选项中删除项目?

问题描述 投票:0回答:1

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

我的问题是:当我长按NavigationView中的特定项目时,如何从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;
}

}

android sharedpreferences navigation-drawer navigationview
1个回答
0
投票

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

看下面的例子:

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 
    }
}

哎呀,有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.