购物车实现加减和全选

//自定义view加减实现public class customview extends RelativeLayout implements View.OnClickListener { private Button addo; private Button removeo; private TextView textview; private Integ...
摘要由CSDN通过智能技术生成
//自定义view加减实现


public class customview extends RelativeLayout implements View.OnClickListener {

    private Button addo;
    private Button removeo;
    private TextView textview;
    private Integer num;
    private int postion;
    Context context;
    List<CarBean.DataBean.ListBean> list;
    private GoodsAdapter goodsAdapter;
    public customview(Context context) {
        super(context);
        intit(context);
    }
    public customview(Context context, AttributeSet attrs) {
        super(context, attrs);
        intit(context);
    }
    public customview(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        intit(context);
    }
    public customview(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        intit(context);
    }
    private void intit(Context context) {
        View inflate = View.inflate(context, R.layout.add_bar, null);
        addo = inflate.findViewById(R.id.add);
        removeo = inflate.findViewById(R.id.remove);
        textview = inflate.findViewById(R.id.textview);
        addo.setOnClickListener(this);
        removeo.setOnClickListener(this);
        addView(inflate);
        textview.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            }
            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                num = Integer.parseInt(charSequence.toString());
            }
            @Override
            public void afterTextChanged(Editable editable) {

            }
        });

    }

    public  void setdata(GoodsAdapter goodsAdapter, List<CarBean.DataBean.ListBean> list, int i){
        this.goodsAdapter =goodsAdapter;
        this.list=list;
        postion=i;
        textview.setText(list.get(i).getNum());
    }
    @Override
    public void onClick(View view) {
        switch (view.getId()){
                case R.id.add:
                    num++;
                    textview.setText(""+num);
                    list.get(postion).setNum(String.valueOf(num));
                    mCallBackListener.callBack();
                    goodsAdapter.notifyItemChanged(postion);
                    break;

                case R.id.remove:
                    if (num<1){
                        Toast.makeText(context,"地了",Toast.LENGTH_SHORT).show();
                    }else {
                        num--;
                        textview.setText(""+num);
                        list.get(postion).setNum(String.valueOf(num));
                        mCallBackListener.callBack();
                        goodsAdapter.notifyItemChanged(postion);
                    }
                    break;
        }
    }

    private CallBackListener mCallBackListener;

    public void setOnCallBack(CallBackListener listener) {
        this.mCallBackListener = listener;
    }
public interface CallBackListener {
    void callBack();
}
}

 

//自定义加减布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    >
    <Button
        android:background="@drawable/jia"
        android:id="@+id/add"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
  />
    <EditText
        android:id="@+id/textview"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="51dp"
        android:gravity="center"
        android:text="0"
        android:textSize="15dp" />

    <Button

        android:id="@+id/remove"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="105dp"
        android:layout_marginTop="4dp"
        android:background="@drawable/jian" />
</RelativeLayout>

//商品适配器

public class GoodsAdapter extends RecyclerView.Adapter<GoodsAdapter.ViewHolder> {
    List<CarBean.DataBean.ListBean> list;
    Context context;

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

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

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int i) {
        viewHolder.name.setText(list.get(i).getTitle());
        viewHolder.price.setText(list.get(i).getPrice());
        Glide.with(context).load(list.get(i).getImages().split("\\|")[0].replace("https","http")).into(viewHolder.imageviewitem);
        viewHolder.checkitem.setChecked(list.get(i).isCheck());
        viewHolder.checkitem.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                list.get(i).setCheck(b);
                if (mShopCallBackListener!=null){
                    mShopCallBackListener.callBack();
                }
            }
        });
        viewHolder.custom.setdata(this,list,i);
        viewHolder.custom.setOnCallBack(new customview.CallBackListener() {
            @Override
            public void callBack() {
                if (mShopCallBackListener!=null){

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

    public  void setAllCheck(boolean isAllcheck){
        for (CarBean.DataBean.ListBean listBean:list
             ) {
            listBean.setCheck(isAllcheck);
        }
        notifyDataSetChanged();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        private final customview custom;
        private ImageView imageviewitem;
        private TextView name,price;
        private CheckBox checkitem;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
           checkitem= itemView.findViewById(R.id.checkboxitem);
            imageviewitem= itemView.findViewById(R.id.imageviewItem);
            price= itemView.findViewById(R.id.textprice);
            name= itemView.findViewById(R.id.texttitle);
            custom =itemView.findViewById(R.id.custom);

        }
    }
    private ShopCallBackListener mShopCallBackListener;

    public void setListener(ShopCallBackListener listener) {
        this.mShopCallBackListener = listener;
    }

    public interface ShopCallBackListener {
        void callBack();
    }

//商家适配器

public class CarAdapter extends RecyclerView.Adapter<CarAdapter.ViewHolder> {
    List<CarBean.DataBean> data;
    Context context;

    public CarAdapter(Context context, List<CarBean.DataBean> data) {
        this.context=context;
        this.data=data;
    }
    @NonNull
    @Override
    public CarAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View inflate = LayoutInflater.from(context).inflate(R.layout.car_layout, viewGroup, false);
        ViewHolder viewHolder = new ViewHolder(inflate);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull final CarAdapter.ViewHolder viewHolder, final int i) {
            viewHolder.textView.setText(data.get(i).getSellerName());
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
        linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
        viewHolder.recyviewitem.setLayoutManager(linearLayoutManager);
        final List<CarBean.DataBean.ListBean> list = data.get(i).getList();
        final GoodsAdapter goodsAdapter = new GoodsAdapter(context, list);
        viewHolder.recyviewitem.setAdapter(goodsAdapter);
        viewHolder.checkBox.setChecked(data.get(i).isCheck());

        goodsAdapter.setListener(new GoodsAdapter.ShopCallBackListener() {
            @Override
            public void callBack() {
                if (mShopCallBackListener!=null){
                    mShopCallBackListener.callBack(data);

                }
                List<CarBean.DataBean.ListBean> list1 = data.get(i).getList();
                boolean ischeckall=true;
                for (CarBean.DataBean.ListBean bean:list1
                     ) {
               if (!bean.isCheck()){
                        ischeckall=false;
                        break;
               }
               viewHolder.checkBox.setChecked(ischeckall);
               list1.get(i).setCheck(ischeckall);

                }

            }
        });
        viewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                data.get(i).setCheck(viewHolder.checkBox.isChecked());
                goodsAdapter.setAllCheck(viewHolder.checkBox.isChecked());
            }
        });
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {
        private CheckBox checkBox;
        private TextView textView;
        private final RecyclerView recyviewitem;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
           checkBox= itemView.findViewById(R.id.check);
           textView= itemView.findViewById(R.id.text);
           recyviewitem=itemView.findViewById(R.id.recyviewitem);
        }
    }
    private ShopCallBackListener mShopCallBackListener;

    public void setListener(ShopCallBackListener listener) {
        this.mShopCallBackListener = listener;
    }

    public interface ShopCallBackListener {
        void callBack(List<CarBean.DataBean> list);
    }
}

//最后的选中切换状态改变jiage

public class MainActivity extends AppCompatActivity implements ShopViewInter,View.OnClickListener {

    private RecyclerView recyview;
    private List<CarBean.DataBean> data;
    private TextView goodssunm;
    private TextView sumprice;
    private CheckBox checkall;
    private CarAdapter carAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ShopPresenterBase shopPresenterBase = new ShopPresenterBase(this);
        shopPresenterBase.getShopModel();
        recyview = findViewById(R.id.recyview);
        goodssunm = findViewById(R.id.sumgoods);
        sumprice = findViewById(R.id.sumprice);
        checkall = findViewById(R.id.checkall);
        checkall.setOnClickListener(this);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        recyview.setLayoutManager(linearLayoutManager);
    }

    @Override
    public void getViewData(Object viewdata) {
       CarBean carBean= (CarBean) viewdata;
        data = carBean.getData();
        carAdapter = new CarAdapter(this, data);
        recyview.setAdapter(carAdapter);
        carAdapter.setListener(new CarAdapter.ShopCallBackListener() {
            @Override
            public void callBack(List<CarBean.DataBean> list) {
                double totalPrice = 0;

                //勾选商品的数量,不是该商品购买的数量
                int num = 0;
                //所有商品总数,和上面的数量做比对,如果两者相等,则说明全选
                int totalNum = 0;
                for (int a=0;a<list.size();a++){
                    //获取商家李的商品
                    List<CarBean.DataBean.ListBean> listBeans = list.get(a).getList();
                    for (int i=0;i<listBeans.size();i++){
                        //得到商品的数量
                        String num2 = listBeans.get(i).getNum();
                        int i1 = Integer.parseInt(num2);
                        totalNum=totalNum+i1;
                        //取选中的状态
                        if (listBeans.get(i).isCheck()){
                            String price = listBeans.get(i).getPrice();
                            String num1 = listBeans.get(i).getNum();
                            Double pricedou = Double.valueOf(price);
                            int intnum = Integer.parseInt(num1);
                            totalPrice=pricedou*intnum;
                            num=num+intnum;
                            Log.i("price",""+totalPrice);
                            Log.i("num",""+num);
                        }
                    }
                }


                if (num < totalNum) {
                    //不是全部选中
                    checkall.setChecked(false);
                } else {
                    //是全部选中
                    checkall.setChecked(true);
                }

                sumprice.setText("合计1:" + totalPrice);
                goodssunm.setText("去结算(" + num + ")");
            }
        });
    }

    private void checkSelect(boolean bool){
        double totalprice=0;

        int num=0;
       for (int a=0;a<data.size();a++){
           CarBean.DataBean dataBean = data.get(a);
           dataBean.setCheck(bool);
           List<CarBean.DataBean.ListBean> list = dataBean.getList();
           for (int i=0;i<list.size();i++){
               list.get(i).setCheck(bool);
               String num1 = list.get(i).getNum();
               String price = list.get(i).getPrice();
               Double douprice = Double.valueOf(price);
               Integer intnum = Integer.valueOf(num1);
               totalprice=totalprice+(douprice*intnum);
                num=num+intnum;
           }
           if (bool){
               sumprice.setText("合计+"+totalprice);
               goodssunm.setText("去结算"+num);
           }else {
               sumprice.setText("合计+0");
               goodssunm.setText("去结算0");
           }

       }


    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.checkall:
                checkSelect(checkall.isChecked());
                carAdapter.notifyDataSetChanged();

                break;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值