前言
购物车系列文章:
购物车列表及确认订单页面 - 技术分析(一)
购物车列表及确认订单页面 - 相关代码(二)
购物车列表及确认订单页面 - 相关代码(三)
购物车列表及确认订单页面 - 部分知识点思路解析(四)
1. 部分知识点思路解析
1>:对于删除店铺和删除商品,思路是一样的:
第一步:调用购物车列表接口,返回 店铺集合groups2和 商品集合childs2;
第二步:然后分别定义一个临时的集合 toBeDeleteGroups 和 toBeDeleteChilds;
第三步:然后遍历groups2和 childs2集合,把选中的店铺和商品添加到临时集合 toBeDeleteGroups 和 toBeDeleteChilds中;
第四步:然后调用 删除订单(删除店铺)和删除商品接口,删除成功后:
如果不用重新调用购物车列表接口,就需要手动调用 groups2.removeAll(toBeDeleteGroups ) 和 childs2.removeAll(toBeDeleteChilds) 从集合中移除选中的数据;
如果需要重新调用购物车列表接口,就不用调用上边方法手动移除选中的数据,直接调用购物车列表接口刷新数据即可,因为后台已经从数据库中删除了数据;
不管是删除店铺还是删除商品,都不能从for循环中删除,在for循环中删除有2个问题:
问题1:for循环删除数据会出现数据错位;
问题2:如果for循环调用删除店铺和删除商品接口时,删除多个,界面会出现抖动现象,就是由于循环删除店铺或者循环删除商品;
for循环删除数据出现问题,可以参照这篇文章:
for循环删除list集合的问题及解决方案
2. 个人思考
对于类似购物车这种列表,其实有很多方式,比如:ExpandableListView、ListView嵌套ListView、RecyclerView、自定义View等等,个人觉得 ExpandableListView这种方式比较简单,但是觉得这种方式有局限性,这里目前只有两种布局,一种是店铺,一种是店铺下的商品(商品可以有一个或者多个),如果在购物车布局中再增加几个不同的布局,ExpandableListView实现可能就有问题,由于个人能力有限,对于如果有多种布局可能难以实现,有大佬有思路烦请告知哈;