购物车

自定义计数器

public class CustomCounter extends LinearLayout {
    private Context mContext;
    private EditText editText_num;
    private ImageView imageView_jia;
    private ImageView imageView_jian;
    private CartChildAdapter adapter;
    private List<CartBean.DataBean.ListBean> list;
    private int num;
    private int position;

    public CustomCounter(Context context) {
        super(context);
        mContext=context;
        list=new ArrayList<>();
        initView();

    }

    public CustomCounter(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        mContext=context;
        list=new ArrayList<>();
        initView();
    }
    public void setData(CartChildAdapter adapter, final List<CartBean.DataBean.ListBean> list, int i){
        this.adapter=adapter;
        this.list=list;
        position=i;
         num = list.get(i).getNum();
         editText_num.setText(num+"");
         editText_num.addTextChangedListener(new TextWatcher() {
             @Override
             public void beforeTextChanged(CharSequence s, int start, int count, int after) {

             }

             @Override
             public void onTextChanged(CharSequence s, int start, int before, int count) {
                  try {
                      String s1 = String.valueOf(s);
                      num = Integer.parseInt(s1);
                      list.get(position).setNum(num);

                  }catch (Exception e){
                      e.printStackTrace();
                      list.get(position).setNum(1);
                  }
                  if(callBackListener!=null){
                      callBackListener.getCheckState();
                  }

             }

             @Override
             public void afterTextChanged(Editable s) {

             }
         });
    }
    private void initView() {
        View view=View.inflate(mContext, R.layout.count_item,null);
        editText_num = view.findViewById(R.id.edit_num);
        imageView_jia = view.findViewById(R.id.image_jia);
        imageView_jian = view.findViewById(R.id.image_jian);
        imageView_jia.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
             num++;
             list.get(position).setNum(num);
             editText_num.setText(num+"");
              callBackListener.getCheckState();
              adapter.notifyItemChanged(position);
            }
        });
        imageView_jian.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if(num>1){
                    num--;
                    list.get(position).setNum(num);
                    editText_num.setText(num+"");
                    callBackListener.getCheckState();
                    adapter.notifyItemChanged(position);
                }else {
                    Toast.makeText(mContext,"数量不能小于0",Toast.LENGTH_SHORT).show();
                }
            }
        });
        addView(view);
    }
    public onCallBackListener callBackListener;
    public void setOnCallBackListener(onCallBackListener backListener){
        this.callBackListener=backListener;
    }

    public interface onCallBackListener{
        void getCheckState();
    }
}

商品的adapter

public class CartChildAdapter extends RecyclerView.Adapter<CartChildAdapter.ViewHolder> {
    private List<CartBean.DataBean.ListBean> list;
    private Context context;

    public CartChildAdapter(List<CartBean.DataBean.ListBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view= LayoutInflater.from(context).inflate(R.layout.cart_child_item,viewGroup,false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int i) {

               viewHolder.price.setText("¥"+list.get(i).getPrice()+".00");
               viewHolder.title.setText(list.get(i).getTitle());
               String images = list.get(i).getImages();
               String[] split = images.split("\\|");
                 Glide.with(context).load(split[0]).into(viewHolder.imageView);
                viewHolder.checkBox.setChecked(list.get(i).isChecked());
               viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                   @Override
                   public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                       list.get(i).setChecked(viewHolder.checkBox.isChecked());
                       if(callBackListener!=null){
                           callBackListener.getCheckState();
                       }
                   }
               });


                //设置数量
                 viewHolder.customCounter.setData(this,list,i);
                 viewHolder.customCounter.setOnCallBackListener(new CustomCounter.onCallBackListener() {
                     @Override
                     public void getCheckState() {
                           if(callBackListener!=null){
                               callBackListener.getCheckState();
                           }
                     }
                 });


    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.item_check)
        CheckBox checkBox;
        @BindView(R.id.item_price)
        TextView price;
        @BindView(R.id.item_title)
        TextView title;
        @BindView(R.id.item_simple)
        ImageView imageView;
        @BindView(R.id.custom_counter)
        CustomCounter customCounter;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            ButterKnife.bind(this,itemView);
        }
    }
    public onCallBackListener callBackListener;
    public void setOnCallBackListener(onCallBackListener backListener){
        this.callBackListener=backListener;
    }

    public interface onCallBackListener{
        void getCheckState();
    }
    public void updateCheck(boolean isSelect){
       for(CartBean.DataBean.ListBean listBean:list){
           listBean.setChecked(isSelect);
       }
        notifyDataSetChanged();
    }
}

商家的adapter

public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> {
    private List<CartBean.DataBean> list;
    private Context context;

    public CartAdapter(Context context) {
        this.context = context;
        list=new ArrayList<>();
    }

    public void setList(List<CartBean.DataBean> list) {
        this.list = list;
        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view= LayoutInflater.from(context).inflate(R.layout.cart_item,viewGroup,false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int i) {
         viewHolder.textView_seller.setText(list.get(i).getSellerName());
        LinearLayoutManager manager=new LinearLayoutManager(context);
        manager.setOrientation(OrientationHelper.VERTICAL);
        viewHolder.recyclerView.setLayoutManager(manager);
        List<CartBean.DataBean.ListBean> alist = this.list.get(i).getList();
        final CartChildAdapter   adapter = new CartChildAdapter(alist,context);
        viewHolder.recyclerView.setAdapter(adapter);
       viewHolder.checkBox_goods.setChecked(list.get(i).isChecked());
         adapter.setOnCallBackListener(new CartChildAdapter.onCallBackListener() {
             @Override
             public void getCheckState() {
                 if(callBackListener!=null){
                     callBackListener.getCheckState();
                 }
                 List<CartBean.DataBean.ListBean> list1 = list.get(i).getList();
                 boolean isCheckAll=true;
                 for (CartBean.DataBean.ListBean listBean:list1){
                     if(!listBean.isChecked()){
                      isCheckAll=false;
                     }
                 }
                 list.get(i).setChecked(isCheckAll);
                 viewHolder.checkBox_goods.setChecked(isCheckAll);
             }

         });


         viewHolder.checkBox_goods.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 list.get(i).setChecked(viewHolder.checkBox_goods.isChecked());
                 adapter.updateCheck(viewHolder.checkBox_goods.isChecked());
             }
         });


    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.text_seller)
        TextView textView_seller;
        @BindView(R.id.child_recycler)
        RecyclerView recyclerView;
        @BindView(R.id.check_goods)
        CheckBox checkBox_goods;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            ButterKnife.bind(this,itemView);
        }
    }
    public onCallBackListener callBackListener;

    public void setOnCallBackListener(onCallBackListener backListener){
        this.callBackListener=backListener;
    }

    public interface onCallBackListener{
        void getCheckState();
    }
}

activity

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cart);
        iPresenter=new IPresenterImpl(this);

        ButterKnife.bind(this);

        LinearLayoutManager manager=new LinearLayoutManager(this);
        manager.setOrientation(OrientationHelper.VERTICAL);
        recyclerView.setLayoutManager(manager);

        adapter=new CartAdapter(this);
        recyclerView.setAdapter(adapter);

        adapter.setOnCallBackListener(new CartAdapter.onCallBackListener() {
            @Override
            public void getCheckState() {
                double totalPrice=0;
                int num=0;
                int totalNum=0;
                for(int a=0;a<data1.size();a++){
                    List<CartBean.DataBean.ListBean> list = data1.get(a).getList();
                    for (int i=0;i<list.size();i++){
                     totalNum=list.get(i).getNum()+totalNum;
                     if(list.get(i).isChecked()){
                         totalPrice=totalPrice+(list.get(i).getNum()*list.get(i).getPrice());
                         num=num+list.get(i).getNum();
                     }
                    }
                }
                if(num<totalNum){
                    checkBox_all.setChecked(false);
                }else {
                    checkBox_all.setChecked(true);
                }
                textView_price.setText("总价:"+totalPrice);
                button_js.setText("结算("+num+")");
            }
        });

        Map<String,String> map=new HashMap<>();
        map.put("uid",26522+"");
        iPresenter.startRequestPost(Apis.URL_CART,map, CartBean.class);
    }
    @OnClick({R.id.check_all})
    public void getViewClick(View view){
        switch (view.getId()){
            case R.id.check_all:
                checkAll(checkBox_all.isChecked());
                adapter.notifyDataSetChanged();
                break;
        }
    }
    public void checkAll(boolean isCheckAll){
        double totalPrice=0;
        int num=0;
        for(int a=0;a<data1.size();a++){
            List<CartBean.DataBean.ListBean> list = data1.get(a).getList();
            data1.get(a).setChecked(isCheckAll);
            for (int i=0;i<list.size();i++){
                   list.get(i).setChecked(isCheckAll);
                    totalPrice=totalPrice+(list.get(i).getNum()*list.get(i).getPrice());
                    num=num+list.get(i).getNum();

            }
        }
        if(isCheckAll){
            textView_price.setText("总价:"+totalPrice);
            button_js.setText("结算("+num+")");
        }else {
            textView_price.setText("总价:"+0.0);
            button_js.setText("结算("+0+")");
        }

    }

    @Override
    public void successData(Object data) {
          CartBean bean= (CartBean) data;
        data1 = bean.getData();
        adapter.setList(data1);
    }

    @Override
    public void failData(String error) {

    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值