1_創建購物車類ShoppingCart 作用:購物車類繼承Wares,記錄某個商品在購物車中的狀態,例如有多少個商品,是否選中 2_創建數據存儲類CartProvider 作用:數據存儲類,存儲數據;存儲數據--把集合轉成String類型存儲(Gson);取數據--把String轉換成列表數據(G ...
1_創建購物車類ShoppingCart
作用:購物車類繼承Wares,記錄某個商品在購物車中的狀態,例如有多少個商品,是否選中
public class ShoppingCart extends SmartServicePagerBean.Wares implements Serializable{ /** * 購買的數量 */ private int count = 1; /** * 是否勾選 */ private boolean isCheck = true; public int getCount() { return count; } public void setCount(int count) { this.count = count; } public boolean isCheck() { return isCheck; } public void setIsCheck(boolean isCheck) { this.isCheck = isCheck; } @Override public String toString() { return "ShoppingCart{" + "count=" + count + ", isCheck=" + isCheck + '}'; } }
2_創建數據存儲類CartProvider
作用:數據存儲類,存儲數據;存儲數據--把集合轉成String類型存儲(Gson);取數據--把String轉換成列表數據(Gson)
public class CartProvider { public static final String JSON_CART = "json_cart"; private final Context context; /** * SparseArray替換HashMap,性能好於HashMap */ private SparseArray<ShoppingCart> datas; public CartProvider(Context context) { this.context = context; datas = new SparseArray<>(10); listToSparse(); } private void listToSparse() { List<ShoppingCart> carts = getAllData(); if (carts != null && carts.size() > 0) { for (int i = 0; i < carts.size(); i++) { ShoppingCart cart = carts.get(i); datas.put(cart.getId(), cart); } } } /** * 得到所有數據 * * @return */ public List<ShoppingCart> getAllData() { return getDataFromLocal(); } /** * 從本地獲取json數據,並且通過Gson解析成List列表數據 * * @return */ private List<ShoppingCart> getDataFromLocal() { List<ShoppingCart> carts = new ArrayList<>(); //從本地獲取緩存的數據 String saveJson = CacheUtils.getString(context, JSON_CART); if (!TextUtils.isEmpty(saveJson)) { //通過Gson把數據轉換成List列表 carts = new Gson().fromJson(saveJson, new TypeToken<List<ShoppingCart>>() { }.getType()); } return carts; } /** * 增加數據 * * @param cart */ public void addData(ShoppingCart cart) { //1.添加數據 ShoppingCart tempCart = datas.get(cart.getId()); if (tempCart != null) { //在列表中已經存在該條數據 tempCart.setCount(tempCart.getCount()+1); }else{ tempCart = cart; tempCart.setCount(1); } datas.put(tempCart.getId(),tempCart); //2.保存數據 commit(); } /** * 保存數據 */ private void commit() { //1.把SparseArray轉換成List List<ShoppingCart> carts = parsesToList(); //2.用Gson把List轉換成String String json = new Gson().toJson(carts); //3.保存數據 CacheUtils.putString(context, JSON_CART, json); } /** * 從parses的數據轉換成List列表數據 * @return */ private List<ShoppingCart> parsesToList() { List<ShoppingCart> carts = new ArrayList<>(); if(datas != null && datas.size() >0){ for (int i=0;i<datas.size();i++){ ShoppingCart cart = datas.valueAt(i); carts.add(cart); } } return carts; } /** * 刪除數據 * * @param cart */ public void deleteData(ShoppingCart cart) { //1.刪除數據 datas.delete(cart.getId()); //2.保存數據 commit(); } /** * 修改數據 * @param cart */ public void updataData(ShoppingCart cart) { //1.修改-count datas.put(cart.getId(), cart); //2.保存數據 commit(); } /** * 把商品Wares轉換成ShoppingCart */ public ShoppingCart conversion(SmartServicePagerBean.Wares wares) { ShoppingCart cart = new ShoppingCart(); cart.setImgUrl(wares.getImgUrl()); cart.setDescription(wares.getDescription()); cart.setName(wares.getName()); cart.setId(wares.getId()); cart.setSale(wares.getSale()); cart.setPrice(wares.getPrice()); return cart; } }
3.商城熱賣的適配器中點擊添加到購物車存儲類
//1.根據位置得到對應的數據 final SmartServicePagerBean.Wares wares = datas.get(position); ..... //設置點擊事件在這裡可以 holder.btn_buy.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //把商品轉換成ShoppingCart ShoppingCart cart = cartProvider.conversion(wares); cartProvider.addData(cart); Toast.makeText(context, "添加成功", Toast.LENGTH_SHORT).show(); } });