你的位置:首页 > 操作系统

[操作系统]硅谷商城3


 

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();	}});