java - 从保存在sharedPreferences中的Arraylist<object>中删除一个对象

标签 java android arraylist sharedpreferences

大家好,我一直在寻找一种方法来将带有自定义对象的Arraylist保存和检索到android Sharedpreferences中。幸运的是,我有办法使用这个 Answer 来做到这一点

public  void saveArray(ArrayList<CartItem> sKey)
{
    SharedPreferences sp = PreferenceManager
            .getDefaultSharedPreferences(this.getApplicationContext());
    SharedPreferences.Editor mEdit1 = sp.edit();

        Gson gson = new Gson();
        String json = gson.toJson(sKey);
        mEdit1.putString("itemx", json);
        mEdit1.commit();
}

public ArrayList<CartItem> readArray(){
  SharedPreferences appSharedPrefs = PreferenceManager
          .getDefaultSharedPreferences(this.getApplicationContext());
  String json = appSharedPrefs.getString("itemx", "");
  Gson gson = new Gson();
  Type type = new TypeToken<ArrayList<CartItem>>(){}.getType();
  ArrayList<CartItem> List = gson.fromJson(json, type);

  return List;
 }

现在我只想删除数组列表中的一个对象,我该怎么做?

最佳答案

您可以读取数组,删除元素并将其保存回来:

public void removeElement(CartItem item) {
    ArrayList<CartItem> items = readArray();
    items.remove(item);
    saveArray(items);
}

P.s.如果您没有认真的动机同步执行此方法,我建议您在保存方法中将 commit() 替换为 apply() (保存将是异步的)。

关于java - 从保存在sharedPreferences中的Arraylist<object>中删除一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35384441/

相关文章:

java - Horizo​​ntalScrollView 与 EditText 向右跳转

java - android.R.layout.simple_list_item_checked 不在 ListView 中切换

android - Ubuntu 10.04 64 位上的 Android 开发使用哪个 JDK?

java - 字符数组列表

Java:如何对自定义类型 ArrayList 进行排序

java - java 循环的意外行为

java - ArrayIndexOutOfBoundsException : 0

java - 在具有自定义对象的 ArrayList 中搜索某些字符串

java - MongoDB查询更新对象的嵌套列表

java - onCreate 后 Android 对象返回 null