有没有办法从共享首选项中删除项目?
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
}
}
希望有帮助。
我有一个导航视图,我在其中以编程方式添加项目并保存它们,以便稍后在共享首选项中恢复。
我的问题是: 当我长按导航视图中的特定项目时,如何从共享首选项中删除特定项目?
这是我的代码:
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
}
}
希望有帮助。