购物车的删除逻辑有问题

来源:13-4 购物车事件逻辑梳理与实现-2

Marsor

2017-09-28

mTotalCount只是初始化了在后续的操作中没有赋值,当从前往后删除时实体的position与adapter中的位置并不一致

写回答

2回答

慕码人6229637

2017-09-29

@OnClick(R2.id.tv_top_shop_cart_del)
void onClickRemoveSelectedItem(){
    final List<MultipleItemEntity> data = mAdapter.getData();
    // 要删除的数据
    final List<MultipleItemEntity> deleteEntities = new ArrayList<>();
    int i = 0;
    for (MultipleItemEntity entity : data){
        final boolean isSelected = entity.getField(ShopCartMultipleFields.IS_SELECTED);
        entity.setField(ShopCartMultipleFields.POSITION, i);
        if (isSelected){
            deleteEntities.add(entity);
        }
        i++;
    }
    for (MultipleItemEntity entity : deleteEntities){
        final int removePosition = entity.getField(ShopCartMultipleFields.POSITION);
        if (removePosition <= mAdapter.getItemCount()) {
            mAdapter.remove(removePosition);
            //更新数据
            mAdapter.notifyItemRangeChanged(removePosition, mAdapter.getItemCount());
        }
    }
    checkItemCount();
}

可以这样写

0
2
找不到工作的苦比
@OnClick(R2.id.tv_top_shop_cart_remove_selected) void onClickRemoveSelectedItem() { final List data = mAdapter.getData(); //要删除的数据 final List deleteEntities = new ArrayList<>(); int i = 0; for (MultipleItemEntity entity : data) { final boolean isSelected = entity.getField(ShopCartItemFields.IS_SELECTED); entity.setField(ShopCartItemFields.POSITION, i); //每次重新赋值位置 if (isSelected) { deleteEntities.add(entity); } i++; } //从List中最后一个开始删除,不影响整个下标 for (int j = deleteEntities.size()-1; j >=0; j--) { int removePosition = deleteEntities.get(j).getField(ShopCartItemFields.POSITION); mAdapter.remove(removePosition); //remove方法内部调用notifyItemRangeChanged } //checkItemCount(); }
2017-10-01
共2条回复

zoro_

2018-03-13

@说的就是你傻冒  点击全选,再删 有问题.

0
0

Android通用框架设计与完整电商App开发

从第一行代码开始教你,通用且一键式配置的框架设计并轻松实现完整电商App

2028 学习 · 1182 问题

查看课程