行业知识
【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
上一篇:无限重生怎么开服务器?
下一篇:高中集数怎么学?