购物车+全选+隐藏显示+结算

购物车+全选+隐藏显示+结算

MainActivity

public class MainActivity extends AppCompatActivity {

    RecyclerView recyclerView;
    MyAdapter adapter;
    List<Bean.DataBean> lists=new ArrayList<>();

    CheckBox checkBox,show;
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        init();

        getData();

        checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(adapter.allCheck){
                    adapter.setAllCheck(false);
                    adapter.notifyDataSetChanged();
                }else {
                    adapter.setAllCheck(true);
                    adapter.notifyDataSetChanged();
                }
            }
        });

        // 调用适配器监听  实时计算价格
        adapter.setListener(new MyListener() {
            @Override
            public void JiSuan() {
                price();
            }
        });
    }

    private void price() {
        int count=0;
        for (int i = 0; i < lists.size(); i++) {

            //拿到集合中每个item,判断check状态
            Bean.DataBean dataBean = lists.get(i);
            boolean checked = dataBean.checked;
            if(checked){
               int price = dataBean.getNum() * dataBean.check_num;
                count+=price;
            }
        }
        textView.setText(count+"");
    }

    private void getData() {
        OkGo.<String>get("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1\n")
                .execute(new StringCallback() {
                    @Override
                    public void onSuccess(Response<String> response) {
                        List<Bean.DataBean> data = new Gson().fromJson(response.body(), Bean.class).getData();
                        lists.addAll(data);
                        adapter.notifyDataSetChanged();

                    }
                });
    }

    private void init() {
        recyclerView=findViewById(R.id.recyclerview);
        adapter=new MyAdapter(lists,this);
        recyclerView.setAdapter(adapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        checkBox=findViewById(R.id.one);
        textView=findViewById(R.id.moneyNumber);
        show=findViewById(R.id.show);
    }

    public void click(View view) {
        switch (view.getId()){
            case R.id.show:
                // 点击编辑 - 显示复选框
                if(show.isChecked()){
                    show.setText("完成");
                    adapter.setShow(true);
                    adapter.notifyDataSetChanged();
                }else{
                    show.setText("编辑");
                    adapter.setShow(false);
                    adapter.notifyDataSetChanged();
                }
//                if(adapter.isShow()){
//
//
//
//                }else {
//
//                }

                break;
            case R.id.pay:
                // 结算跳转页面


                break;
        }
    }
}

Bean类

在Bean类里 加上两个属性

public boolean checked;//是否选中
public int check_num;//数量

适配器

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

    List<Bean.DataBean> lists;
    Context context;
    LayoutInflater layoutInflater;
    boolean show=false; // 是否显示
    boolean allCheck=false;//是否全选

    MyListener listener;

    public boolean isShow() {
        return show;
    }

    public void setShow(boolean show) {
        this.show = show;
    }

    public boolean isAllCheck() {
        return allCheck;
    }

    public void setAllCheck(boolean allCheck) {
        this.allCheck = allCheck;
    }

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

    public MyAdapter(List<Bean.DataBean> lists, Context context) {
        this.lists = lists;
        this.context = context;
        layoutInflater=LayoutInflater.from(context);
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = layoutInflater.inflate(R.layout.layout_item, parent, false);
        return new MyViewHolder(view);

    }

    @Override
    public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) {
        holder.price.setText("¥  "+lists.get(position).getNum());
        holder.title.setText(lists.get(position).getTitle());
        Glide.with(context).load(lists.get(position).getPic()).into(holder.imageView);

        //显示复选框
        if(show){
            holder.checkBox.setVisibility(View.VISIBLE);
        }else{
            holder.checkBox.setVisibility(View.GONE);
        }
        //全选
        if(allCheck){
            holder.checkBox.setChecked(true);
            lists.get(position).checked=true;
            //接口回调
            listener.JiSuan();
        }else{
            holder.checkBox.setChecked(false);
            lists.get(position).checked=false;

            listener.JiSuan();
        }
        // 点击复选框
        holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                lists.get(position).checked=b;
                listener.JiSuan();
            }
        });
        // 加减数量
        holder.add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String s = holder.good_num.getText().toString();
                int number = Integer.parseInt(s);
                holder.good_num.setText(number+1+"");
                lists.get(position).check_num=number+1;

                listener.JiSuan();
            }
        });
       
        holder.delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String s = holder.good_num.getText().toString();
                int number = Integer.parseInt(s);
                if(number-1>=0){
                    holder.good_num.setText(number-1+"");
                    lists.get(position).check_num=number-1;
                }else{
                    Toast.makeText(context, "数量小于0", Toast.LENGTH_SHORT).show();
                }
                listener.JiSuan();
            }
        });

    }

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

    class MyViewHolder extends RecyclerView.ViewHolder {

        CheckBox checkBox;
        ImageView imageView,add,delete;
        TextView title,price,good_num;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            checkBox=itemView.findViewById(R.id.item_checkbox);
            imageView=itemView.findViewById(R.id.item_pic);
            title=itemView.findViewById(R.id.item_title);
            price=itemView.findViewById(R.id.price);
            add=itemView.findViewById(R.id.image_add);
            delete=itemView.findViewById(R.id.image_delete);
            good_num=itemView.findViewById(R.id.good_number);
        }
    }
}

自定义接口

public interface MyListener {
    void JiSuan();
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值