如何在手机内存中存储对象的ArrayList并在结束应用程序时保持其值?

时间:2018-03-27 11:00:38

标签: java android arraylist sharedpreferences gson

你好Android开发者, 我正在尝试在android中的小内存(TinyDB)中存储对象的ArrayList,当我搜索时,我发现这个名为TinyDB的对象,它应该允许我保存并检索我的列表。 这是我的方法保存:

public void save(View view) {
    ArrayList<FoodModel> savedList = new ArrayList<FoodModel>();
    FoodModel foodModel = new FoodModel();

    foodModel.setFoodName(FoodName);
    foodModel.setDate(Date); // date of article
    foodModel.setFoodLink(FoodLink); // link
    foodModel.setImageLink(mainImageUrl);

    savedList.add(foodModel);

    TinyDB tinydb = new TinyDB(DetailActivity.this);
    tinydb.putListObject("SavedList", savedList);

    ArrayList<FoodModel> List = tinydb.getListObject("SavedList" , DetailActivity.class) ;
   // Log.i(TAG, "**************************" + tinydb.getListObject("SavedList" , DetailActivity.class).get(0).getFoodName());

}

以下是TinyDB类中使用的方法:

 public ArrayList<Object> getListObject(String key, Class<?> mClass){
    Gson gson = new Gson();

    ArrayList<String> objStrings = getListString(key);
    ArrayList<Object> objects =  new ArrayList<Object>();

    for(String jObjString : objStrings){
        Object value  = gson.fromJson(jObjString,  mClass);
        objects.add(value);
    }
    return objects;
}

public void putListObject(String key, ArrayList<FoodModel> objArray){
    checkForNullKey(key);
    Gson gson = new Gson();
    ArrayList<String> objStrings = new ArrayList<String>();
    for(Object obj : objArray){
        objStrings.add(gson.toJson(obj));
    }
    putListString(key, objStrings);
}
public void putListString(String key, ArrayList<String> stringList) {
    checkForNullKey(key);
    String[] myStringList = stringList.toArray(new String[stringList.size()]);
    preferences.edit().putString(key, TextUtils.join("‚‗‚", myStringList)).apply();
}

当我检索列表时出现错误,我认为这是一个强制转换问题,因为方法getListObject返回Object类型的数组列表,但我可以解决这个问题! 请帮忙:(

0 个答案:

没有答案