• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 硅谷商城3--购物车数据存储器,3--购物车

硅谷商城3--购物车数据存储器,3--购物车

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

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

  

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 硅谷商城第二版1--主框架,硅谷商城第二版1--
  • 硅谷商城第二版3--分类模块,硅谷商城第二版3--
  • 硅谷商城第二版5--个人中心模块,硅谷商城第二版5--
  • 硅谷商城第二版6--购物车模块,6--购物车
  • 硅谷商城3--购物车数据存储器,3--购物车
  • 硅谷商城4--显示购物车商品,硅谷商城4--购物车
  • 硅谷商城5--购物车商品选中和商品总价计算,5--购物车
  • 硅谷商城6--购物车编辑实现,硅谷商城6--购物车

相关文章

  • 2017-05-26用Kotlin创建第一个Android项目(KAD 01),kotlinandroid
  • 2017-05-26Xamarin android 的WebClient Json下载并存储本地及sqlite数据库,xamarinsqlite
  • 2017-05-26Android系统默认对话框添加图片,
  • 2017-05-26初次使用Android Studio时的配置
  • 2017-05-26Touch事件分发
  • 2017-05-26Android源码装饰模式---ContextWrapper
  • 2017-05-26App解读,新闻解读app
  • 2017-05-26android:使用gallery和imageSwitch制作可左右循环滑动的图片浏览器
  • 2017-05-26nagios分组出图代码实现讲解[1]
  • 2017-05-26基于PGPool的1主2从PostgreSQL流复制HA的搭建

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android—基于Socket与上传图片到客户端,
    • Android热补丁动态修复技术(二):实战!CLASS_ISPREVERIFIED问题!
    • android ImageSwitcher,imageswitcher
    • Android中使用开源框架citypickerview实现省市区三级联动选择,
    • java.lang.IllegalArgumentException: Illegal character in query at index 261,
    • 安卓的主要几大布局,安卓布局
    • Android必知必会-使用okhttp的PUT方式上传文件
    • nginx 1.12 stream 日志设置
    • Android 查看自己的keystore的别名及相关信息,androidkeystore
    • Android开发笔记(6)——类的设定与继承,android笔记

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有