总结下安卓实现购物车功能原理
来源:互联网 发布:微念科技有限公司 知乎 编辑:程序博客网 时间:2024/06/06 13:25
主要是在内存创建个名叫SparseArray的对象,算是升级版的Hashmap,在性能上提高了优化,利用key-value存储商品Bean。
首先我们需要个操控购物车的工具类
这里叫做CartUtils吧,必须是单例的(毕竟一个用户一个购物车嘛),我们在该类的构造方法(有初始化作用)里初始化下sparseArray
Step.1
SparseArray data=new SparseArray<>(100);
这样就有了存储商品的数据结构,接下来,我们需要思考将商品存入服务器还是缓存(这里说的缓存就是sharedpreferences)
这里我就先选择本地缓存了。
Step.2
需要从本地缓存中读取
因为本地存入的是json数据,json数据如何转换成sparseArray,直接转换是不可能的,但是可以间接转换,我们就需要个中间人对象
这个对象就是Arraylist
创建个方法 listToSparse();
private void listToSparse() { List<GoodsBean> carts = getAllData(); //放到sparseArry中 if (carts != null && carts.size() > 0) { for (int i = 0; i < carts.size(); i++) { GoodsBean goodsBean = carts.get(i); datas.put(Integer.parseInt(goodsBean.getProduct_id()), goodsBean); } } }
public List<GoodsBean> getAllData() {
return getDataFromLocal();
}
//本地获取json数据,并且通过Gson解析成list列表数据 public List<GoodsBean> getDataFromLocal() { List<GoodsBean> carts = new ArrayList<>(); //从本地获取缓存数据 String savaJson = CacheUtils.getString(context, JSON_CART); if (!TextUtils.isEmpty(savaJson)) { //把数据转换成列表 carts = new Gson().fromJson(savaJson, new TypeToken<List<GoodsBean>>() { }.getType()); } return carts; }
这里用到了Gson将Json字符串转化为List
然后分别遍历list加入sparseArray。
提供三个方法,对外进行调用
addData() deleteData() updateData()
public void addData(GoodsBean cart) { //添加数据 GoodsBean tempCart = datas.get(Integer.parseInt(cart.getProduct_id())); if (tempCart != null) { tempCart.setNumber(tempCart.getNumber() + cart.getNumber()); } else { tempCart = cart; tempCart.setNumber(1); } datas.put(Integer.parseInt(tempCart.getProduct_id()), tempCart); //保存数据 commit(); }
这里的commit就是将sparseArray存入本地缓存
private void commit() { //把parseArray转换成list List<GoodsBean> carts = sparsesToList(); //把转换成String String json = new Gson().toJson(carts); // 保存 CacheUtils.putString(context, JSON_CART, json); }
private List<GoodsBean> sparsesToList() { List<GoodsBean> carts = new ArrayList<>(); if (datas != null && datas.size() > 0) { for (int i = 0; i < datas.size(); i++) { GoodsBean shoppingCart = datas.valueAt(i); carts.add(shoppingCart); } } return carts; }
2 0
- 总结下安卓实现购物车功能原理
- 购物车实现功能
- 购物车功能实现
- 购物车功能实现
- 购物车功能实现
- Session原理、生命周期及购物车功能的实现
- 使用Ajax实现JSP购物车功能原理
- 使用Ajax实现JSP购物车功能原理
- 购物车实现原理
- 购物车实现原理
- 购物车实现原理
- 购物车实现购物的原理
- 购物车实现购物的原理
- PHP实现购物车功能
- 加入购物车功能实现
- javase实现购物车功能
- jQuery实现购物车功能
- 购物车功能如何实现
- SpringBoot非官方教程 | 第十六篇:用restTemplate消费服务
- 【redis】redis集群节点选举
- Opencv学习——图像及视频读取
- 栈结构
- 日志持久化插入sql语法错误处理
- 总结下安卓实现购物车功能原理
- 【Linux】Ubuntu下C语言访问MySQL数据库入门
- 二叉树的镜像
- C语言编程练习——查找介于n1与n2(0<n1<n2<32768)之间所有满足下列条件的整数:
- springMVC 原理
- weka,FP,priori
- 嵌入式系统设计师
- 11大科技趋势
- 新的开始