你好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类型的数组列表,但我可以解决这个问题! 请帮忙:(