首页 > 解决方案 > 添加到购物车不会更新数量,而是再次添加产品

问题描述

如果购物车中的数量已经为 1,我正在尝试仅使用数量更新购物车,但它不起作用。我的购物车数组不会更新。

这是我的 viewHolder 类,其中数组 menuItemArrayList 由产品组成,数组 selectionItemArrayList 是购物车。int totalAmount 是购物车中产品的总和,计算得很好。

public class DishViewHolder extends RecyclerView.ViewHolder{

        public TextView tvMenuItemName, tvMenuItemDescription, tvMenuItemPrice;
        public ImageView ivMenuItemImage;
        public Button btnInitialAdd;

        public ArrayList<SelectionItem> selectionItemArrayList = new ArrayList<>();

        public DishViewHolder(@NonNull View itemView) {
            super(itemView);

            tvMenuItemName = itemView.findViewById(R.id.menu_item_name);
            tvMenuItemDescription = itemView.findViewById(R.id.menu_item_description);
            ivMenuItemImage = itemView.findViewById(R.id.image_menu_item);
            tvMenuItemPrice = itemView.findViewById(R.id.menu_item_price);
            btnInitialAdd = itemView.findViewById(R.id.button_initial_add);
            btnInitialAdd.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int position = getAdapterPosition();

                    for (SelectionItem selectionNameCheck: selectionItemArrayList) {
                        if (selectionNameCheck.equals(menuItemArrayList)) {

                            selectionNameCheck.selectionQuantity++;
                        } else {
                            SelectionItem selectionItem = new SelectionItem(menuItemArrayList.get(position).getMenuItemName(), menuItemArrayList.get(position).getMenuItemPrice(), 1);
                            selectionItemArrayList.add(selectionItem);

                        }
                    }


                    totalAmount += Integer.parseInt(tvMenuItemPrice.getText().toString());
                    amountAddListener.onAmountAdd(totalAmount, selectionItemArrayList);
                }
            });

在 for each 块中,我正在遍历购物车数组以查看是否已经输入了产品。如果是,则只需更新数量,否则添加一个新的数组元素,即所选产品。

标签: android

解决方案


Equals 不能那样工作。而不是

if (selectionNameCheck.equals(menuItemArrayList)) {
    selectionNameCheck.selectionQuantity++;
}

利用:

if (menuItemArrayList.contains(selectionNameCheck)){
    selectionNameCheck.selectionQuantity++;
}

推荐阅读