如果Anny知道这个问题,请提前告诉我一个解决方案-- addFavorite方法只能从数组中获取行,不能存储超过一个行--它用getfavourites方法覆盖
public class SharedPreference {
public static final String PREFS_NAME = "PRODUCT_APP";
public static final String FAVORITES = "Product_Favorite";
public SharedPreference() {
super();
}
// This four methods are used for maintaining favorites.
public void saveFavorites(Context context, List<Product> favorites) {
SharedPreferences settings;
Editor editor;
settings = context.getSharedPreferences(PREFS_NAME,
Context.MODE_PRIVATE);
editor = settings.edit();
Gson gson = new Gson();
String jsonFavorites = gson.toJson(favorites);
editor.putString(FAVORITES, jsonFavorites);
editor.commit();
}
public void addFavorite(Context context, Product product) {
List<Product> favorites = getFavorites(context);
if (favorites == null)
favorites = new ArrayList<Product>();
favorites.add(product);
saveFavorites(context, favorites);
}
public void removeFavorite(Context context, Product product) {
ArrayList<Product> favorites = getFavorites(context);
if (favorites != null) {
favorites.remove(product);
saveFavorites(context, favorites);
}
}
public ArrayList<Product> getFavorites(Context context) {
SharedPreferences settings;
List<Product> favorites;
settings = context.getSharedPreferences(PREFS_NAME,
Context.MODE_PRIVATE);
if (settings.contains(FAVORITES)) {
String jsonFavorites = settings.getString(FAVORITES, null);
Gson gson = new Gson();
Product[] favoriteItems = gson.fromJson(jsonFavorites,
Product[].class);
favorites = Arrays.asList(favoriteItems);
favorites = new ArrayList<Product>(favorites);
} else
return null;
return (ArrayList<Product>) favorites;
}
}发布于 2015-06-27 09:51:59
每次在add方法中,您都使用了新关键字,这意味着您正在用新列表覆盖之前的列表。首先需要从存储的共享Prefrence中添加getList,然后将新项添加到该列表中。
public void addFavorite(Context context, Product product) {
List<Product> favorites = new ArrayList<Product>();
// this line cause you problem.
// favorites = new ArrayList<Product>();
// this line cause you problem.
// add code from below line
favorites=getFavorites(context);
if(favorites!=null)
{
favorites.add(product);
}
saveFavorites(context, favorites);
}https://stackoverflow.com/questions/31087286
复制相似问题