指引网

当前位置: 主页 > 编程开发 > Android >

硅谷百货公司6-购物车编辑实现

来源:网络 作者:佚名 点击: 时间:2017-07-09 10:09
[摘要] 硅谷商城6--购物车编辑实现       完成状态                                 &
硅谷商城6--购物车编辑实现

  

    完成状态                                          编辑状态

1_设置点击事件和定义状态

在GovaffairPager类中

public class GovaffairPager extends BasePager {
    ............

    /**
     * 编辑状态
     */
    private static final int ACTION_EDIT = 0;
    /**
     * 完成状态
     */
    private static final int ACTION_COMPLETE = 1;
   
    @Override
    public void initData() {
        ......

        //设置编辑的点击事件
        btn_cart.setTag(ACTION_EDIT);
        btn_cart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int action = (int) btn_cart.getTag();
                if(action ==ACTION_EDIT){
                    //变成完成状态
                    showDelete();
                }else if(action ==ACTION_COMPLETE){
                    //变成编辑状态
                    hideDelete();
                }
            }
        });
    }

    /**
     * 隐藏删除按钮
     */
    private void hideDelete() {
        //1.文本设置-编辑
        btn_cart.setText("编辑");
        //2.状态设置编辑
        btn_cart.setTag(ACTION_EDIT);
        //3.数据设置非全选
        adapter.checkAll_none(true);
        adapter.checkAll();
        //4.隐藏按钮显示,显示结算按钮
        btn_delete.setVisibility(View.GONE);
        btn_order.setVisibility(View.VISIBLE);
        //5.价格重新计算
        adapter.showTotalPrice();
    }

    /**
     * 显示删除按钮
     */
    private void showDelete() {
        //1.文本设置-完成
        btn_cart.setText("完成");
        //2.状态设置完成
        btn_cart.setTag(ACTION_COMPLETE);
        //3.数据设置非全选
        adapter.checkAll_none(false);
        adapter.checkAll();
        //4.删除按钮显示,隐藏结算按钮
        btn_delete.setVisibility(View.VISIBLE);
        btn_order.setVisibility(View.GONE);
        //5.价格重新计算
        adapter.showTotalPrice();
    }
}

2_在适配器中删除选中的item

在GovaffairPager类中

//设置点击删除
btn_delete.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //只是把选择的删除
        adapter.deleteCart();
    }
});

 

在适配器中的代码

/**
 * 删除选中的数据
 */
public void deleteData() {
//        if(datas != null && datas.size() >0){
//            for(int i=0;i<datas.size();i++){
//                ShoppingCart cart = datas.get(i);
//                if(cart.isCheck()){
//                    //1.删除本地缓存的
//                    cartProvider.deleteData(cart);
//                    //2.删除当前内存的
//                    datas.remove(cart);
//                    //3.刷新数据
//                    notifyItemRemoved(i);
//                    i--;
//                }
//            }
//        }

	if(datas != null && datas.size() >0){
		for(Iterator iterator = datas.iterator();iterator.hasNext();){
			ShoppingCart cart = (ShoppingCart) iterator.next();
			if(cart.isCheck()){
				//这行代码放在前面
				int position = datas.indexOf(cart);
				//1.删除本地缓存的
				cartProvider.deleteData(cart);
				//2.删除当前内存的
				//datas.remove(cart);
				iterator.remove();
				//3.刷新数据
				notifyItemRemoved(position);
			}
		}
	}
}

  

 

------分隔线----------------------------