网友通过本文主要向大家介绍了硅谷商城,硅谷,硅谷亮城写字楼,济南硅谷培训学校,尚硅谷官网等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
硅谷商城3--购物车数据存储器,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();
}
});

