小工具知识网

当前位置: 首页 > 行业知识 > 【Android】实现简易购物车功能(附源码)

行业知识

【Android】实现简易购物车功能(附源码)

2026-11-07 13:08:26 来源:互联网转载

先上结果:

代码:

首先引入图片加载:

implementation 'com.github.bumptech.glide:glide:4.15.1'

配置权限清单:

            

页面布局:activity_main.xml

                                                            

条目布局:item_cart.xml

                                                                

资源文件:shape_cart_item_add_cut_border.xml

        

shape_pider_1_v.xml

            

适配器:CartAdapter

public class CartAdapter extends RecyclerView.Adapter {    private final List list;    private final Context context;    private final List selects=new ArrayList();    public CartAdapter(List list, Context context) {        this.list = list;        this.context = context;    }    @NonNull    @Override    public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {        View view= LayoutInflater.from(context).inflate(R.layout.item_cart,null,false);        return new Holder(view);    }    @Override    public void onBindViewHolder(@NonNull Holder holder, int position) {        CartBean cartBean =list.get(position);        holder.name.setText(cartBean.getName());        holder.number.setText(String.valueOf(cartBean.getNumber()));        holder.price.setText(String.format("%1$.2f¥", cartBean.getPrice()));        holder.reduce.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                int n;                n = Integer.parseInt(holder.number.getText().toString());                if (n >1){                    n = n -1;                    holder.number.setText(String.valueOf(n));                    cartBean.setNumber(n);                }                else {                    Toast.makeText(context,"最少选择一件",Toast.LENGTH_SHORT).show();                }                updateItem();            }        });        holder.add.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                int n;                n = Integer.parseInt(holder.number.getText().toString());                n = n + 1;                cartBean.setNumber(n);                holder.number.setText(String.valueOf(n));                updateItem();            }        });        holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {                cartBean.setSelect(b);                updateItem();            }        });        holder.checkBox.setChecked(cartBean.isSelect());        Glide.with(context).load(cartBean.getCover()).into(holder.cover);    }    @Override    public int getItemCount() {        return list.size();    }    public static class Holder extends RecyclerView.ViewHolder{        CheckBox checkBox;        ImageView cover;        TextView name,number,reduce,add,price;        public Holder(@NonNull View itemView) {            super(itemView);            checkBox=itemView.findViewById(R.id.checkbox);            cover=itemView.findViewById(R.id.cover);            name=itemView.findViewById(R.id.name);            number=itemView.findViewById(R.id.tv_num);            reduce=itemView.findViewById(R.id.tv_reduce);            add=itemView.findViewById(R.id.tv_add);            price=itemView.findViewById(R.id.price);        }    }    private void updateItem(){        selects.clear();        for (CartBean cartBean:list){            if (cartBean.isSelect()){                selects.add(cartBean);            }        }        onChange.change(selects);    }    public OnChange onChange;    public void setOnChange(OnChange onChange) {        this.onChange = onChange;    }    public List getSelects() {        return selects;    }    //条目改变-接口回调    public interface OnChange{        void change(List selects);    }}

bean类:CartBean

public class CartBean {    private String name;    private String cover;    private boolean isSelect;    private int number;    private double price;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getCover() {        return cover;    }    public void setCover(String cover) {        this.cover = cover;    }    public boolean isSelect() {        return isSelect;    }    public void setSelect(boolean select) {        isSelect = select;    }    public int getNumber() {        return number;    }    public void setNumber(int number) {        this.number = number;    }    public double getPrice() {        return price;    }    public void setPrice(double price) {        this.price = price;    }    public CartBean(String name, String cover, boolean isSelect, int number, double price) {        this.name = name;        this.cover = cover;        this.isSelect = isSelect;        this.number = number;        this.price = price;    }    @Override    public String toString() {        return "CartBean{" +                "name='" + name + '\'' +                ", cover='" + cover + '\'' +                ", isSelect=" + isSelect +                ", number=" + number +                ", price=" + price +                '}';    }}

源码

github:https://github.com/panzhusheng/CartDemo

gitee:https://gitee.com/pan-zs/cart-demo

上一篇:无限重生怎么开服务器?

下一篇:高中集数怎么学?