电商项目中常常有购物车这个功能,做个很多项目了,都有不同的界面,选了一个来讲一下。

主要包含了 店铺分类,侧滑删除,商品筛选,增加和减少,价格计算等功能。

看看效果图:

重要代码:

 private void showExpandData(){
cartExpandAdapter=new CartExpandAdapter(this,cartExpandablelistview,cartInfo.getData());
cartExpandablelistview.setAdapter(cartExpandAdapter);
int intgroupCount = cartExpandablelistview.getCount();
for (int i=0; i<intgroupCount; i++)
{
cartExpandablelistview.expandGroup(i);
}
/**
* 全选
*/
cartExpandAdapter.setOnItemClickListener(new OnViewItemClickListener() {
@Override
public void onItemClick(boolean isFlang, View view, int position) {
cartInfo.getData().get(position).setIscheck(isFlang);
int length=cartInfo.getData().get(position).getItems().size();
for (int i = 0; i < length; i++) {
cartInfo.getData().get(position).getItems().get(i).setIscheck(isFlang);
}
cartExpandAdapter.notifyDataSetChanged();
showCommodityCalculation();
}
}); /**
* 单选
*/
cartExpandAdapter.setOnClickListenterModel(new OnClickListenterModel() {
@Override
public void onItemClick(boolean isFlang, View view,int onePosition, int position) {
cartInfo.getData().get(onePosition).getItems().get(position).setIscheck(isFlang);
int length=cartInfo.getData().get(onePosition).getItems().size();
for (int i = 0; i < length ; i++) {
if (! cartInfo.getData().get(onePosition).getItems().get(i).ischeck()){
if (!isFlang){
cartInfo.getData().get(onePosition).setIscheck(isFlang);
}
cartExpandAdapter.notifyDataSetChanged();
showCommodityCalculation();
return;
}else {
if (i== ( length-1)){
cartInfo.getData().get(onePosition).setIscheck(isFlang);
cartExpandAdapter.notifyDataSetChanged();
}
}
}
showCommodityCalculation();
}
});
cartExpandAdapter.setOnClickDeleteListenter(new OnClickDeleteListenter() {
@Override
public void onItemClick(View view, int onePosition, int position) {
Toast.makeText(MainActivity.this,"删除操作",Toast.LENGTH_LONG).show();
}
}); /***
* 数量增加和减少
*/
cartExpandAdapter.setOnClickAddCloseListenter(new OnClickAddCloseListenter() {
@Override
public void onItemClick(View view, int index, int onePosition, int position,int num) {
if (index==1){
if (num>1) {
cartInfo.getData().get(onePosition).getItems().get(position).setNum((num - 1));
cartExpandAdapter.notifyDataSetChanged();
}
}else {
cartInfo.getData().get(onePosition).getItems().get(position).setNum((num + 1));
cartExpandAdapter.notifyDataSetChanged();
}
showCommodityCalculation();
}
}); }

这是我项目中用到的购物车,基本的功能都有了的。

有需要的小伙们,可以参考一下。

代码下载Github:https://github.com/DickyQie/android-shoppingcart

Android-----购物车(包含侧滑删除,商品筛选,商品增加和减少,价格计算,店铺分类等)的更多相关文章

  1. 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变

    查看本章节 查看作业目录 需求说明: 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变 当用户单击"+" ...

  2. Android实现RecyclerView侧滑删除和长按拖拽-ItemTouchHelper

    RecyclerView这个被誉为ListView和GirdView的替代品,它的用法在之前的一篇博文中就已经讲过了,今天我们就来实现RecyclerView的侧滑删除和长按拖拽功能,实现这两个功能我 ...

  3. android下载管理、理财、浏览器、商品筛选、录音源码等

    Android精选源码 android仿美拍直播的点赞动画   android视频播放器完美切换全屏.小窗口源码   android类似随手记理财类源码   android简单浏览器源码   andr ...

  4. Redis命令拾遗四(集合类型)—包含简单搜索筛选商品设计实例。

    本文版权,归博客园和作者吴双共同所有.转载和爬虫请注明博客园蜗牛Redis系列文章地址 http://www.cnblogs.com/tdws/tag/NoSql/ Redis数据类型之集合(Set) ...

  5. JS前端数据多条件筛选(商品搜索)

    有时候也会需要在前端进行数据筛选,增强交互体验.当数据可用的筛选条件较多时,把逻辑写死会给后期维护带来很大麻烦.下面是我自己写的一个简单的筛选器,筛选条件可以根据数据包含的字段动态设置. 仿照京东的筛 ...

  6. Android 自定义ListView Item侧滑删除

    本程序是基于网上开源项目修改而来,具体来源忘了,懒得搜了,如果有不合适的地方,请原作者联系我,我会及时回复和处理的! 该例子程序中主要包含两个ListView,一个是实现侧滑删除,一个是侧滑出菜单,代 ...

  7. 【PHP开源产品】Ecshop的商品筛选功能实现分析之一

    一.首先,说明一下为什么要对category.php文件进行分析. 原因如下: ①个人对商城类商品筛选功能的实现比较好奇: ②对商城中关于商品的数据表设计比较感兴趣.(该功能涉及到与数据库的交互,而且 ...

  8. xamarin.android pullToRefresharp.Android下拉刷新样式、侧滑删除功能

    如果你正则使用xamarin.From开发项目,那么listview一定是你比不可少的控件.但是由于xamarin的listview在安卓上的功能有限,所以经常需要使用Renderers来改写平台实现 ...

  9. 现有某电商网站用户对商品的收藏数据,记录了用户收藏的商品id以及收藏日期,名为buyer_favorite1。 buyer_favorite1包含:买家id,商品id,收藏日期这三个字段,数据以“\t”分割

    实验内容(mapReduce安装请按照林子雨教程http://dblab.xmu.edu.cn/blog/631-2/) 现有某电商网站用户对商品的收藏数据,记录了用户收藏的商品id以及收藏日期,名为 ...

随机推荐

  1. lunux系统安全

    1.清除不必要的系统帐户 [root@deep]# userdel adm [root@deep]# userdel lp [root@deep]# userdel sync [root@deep]# ...

  2. MVC之路由

    1.路由规则理解: 在MVC项目中,路由是一个独立的模块,需要引入System.Web.Routing ,路由的作用就是确定控制器和行为,同时确定其他的参数,然后将这些信息传递个相应的控制器和行为. ...

  3. pta 习题集 5-2 找出不是两个数组共有的元素 (5分)

    给定两个整型数组,本题要求找出不是两者共有的元素. 输入格式: 输入分别在两行中给出两个整型数组,每行先给出正整数NN(≤20≤20),随后是NN个整数,其间以空格分隔. 输出格式: 在一行中按照数字 ...

  4. CH1809匹配统计【KMP】

    1809 匹配统计 0x18「基本数据结构」练习 描述 阿轩在纸上写了两个字符串,分别记为A和B.利用在数据结构与算法课上学到的知识,他很容易地求出了“字符串A从任意位置开始的后缀子串”与“字符串B” ...

  5. scrapy爬虫系列之四--爬取列表和详情

    功能点:如何爬取列表页,并根据列表页获取详情页信息? 爬取网站:东莞阳光政务网 完整代码:https://files.cnblogs.com/files/bookwed/yangguang.zip 主 ...

  6. HDU1530 Maximum Clique dp

    正解:dp 解题报告: 这儿是传送门 又是个神仙题趴QAQ 这题就直接说解法辣?主要是思想比较难,真要说有什么不懂的知识点嘛也没有,所以也就没什么好另外先提一下的知识点QAQ 首先取反,就变成了求最大 ...

  7. centos Linux系统日常管理1 cpuinfo cpu核数 命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ,lsof ,pidof 第十四节课

    centos Linux系统日常管理1  cpuinfo cpu核数   命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ...

  8. 5.7 Components — Sending Actions From Components to Your Application

    一.概述 1. 当一个组件在模板中被使用时,它具有发送action到这个模板的controller和routes的能力.当重大事件发生的时候,这些允许组件通知application,比如点击组件一个特 ...

  9. (26)SQLite集成与用法

    概述 在Cocos2d-x中,简单数据存储,可以使用UserDefault.那么如何存储大量,不规则的数据?我们可以使用SQLite数据库存储数据.SQLite是使用非常广泛的嵌入式数据库,它有小巧 ...

  10. Action<>和Func<> 区别

    其实他们两个都是委托[代理]的简写形式. 一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的代码: public delegate void myDeleg ...