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

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

看看效果图:

重要代码:

 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. 解决IE7下scroll的bug

    IE7下scroll滚动问题 没法撑开 ie7下没办法撑开div; 即是设置了overflow-y:scroll; 解决版本:给设置scroll的容器加上position:relative

  2. js常用的几个验证

    /// <summary> ///1. 使用正则表达式验证 参数 是否 为数值 /// </summary> /// <param name="trNumber ...

  3. Oracle数据类型char与varchar的对比

    使用scott用户连接数据库 新建一个表 create table stu01(name char(32)); 插入一条数据 insert into stu01 values('liuyueming' ...

  4. LightBGM之Dataset

    最近使用了LightBGM的Dataset,记录一下: 1.说明: classlightgbm.Dataset(data, label=None, reference=None, weight=Non ...

  5. BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。面向切面 将声明性事务管理集成到应用程序中

    Spring 系列: Spring 框架简介 https://www.ibm.com/developerworks/cn/java/wa-spring1/ Spring 框架简介 Spring AOP ...

  6. Design Pattern in Simple Examples

    Instead of defining what is design pattern lets define what we mean by design and what we mean by pa ...

  7. sql server 里的文件和文件组使用

    转自:https://www.cnblogs.com/woodytu/p/5821827.html 参考:https://www.sqlskills.com/blogs/paul/files-and- ...

  8. IP地址与子网掩码的计算

    128.0.0.0=1 192.0.0.0=2224.0.0.0=3 240.0.0.0=4 248.0.0.0=5 252.0.0.0=6 254.0.0.0=7 255.0.0.0=8255.12 ...

  9. zw“小数据”理论也碰上了“黑天鹅”

    4月上旬,在blog<大数据和高频量化交易 >,我们曾经说过: 实战测试,数据越多,反而会影响精度.目前个人数据分析的一个重点,就是"小"数据.老子<道德经·第六 ...

  10. Gulp和Webpack对比

    在现在的前端开发中,前后端分离.模块化开发.版本控制.文件合并与压缩.mock数据等等一些原本后端的思想开始逐渐渗透到“大前端”的开发中.前端开发过程越来越繁琐,当今越来越多的网站已经从网页模式进化到 ...