添加到购物车不会更新数量,而是再次添加产品

时间:2019-05-21 14:41:29

标签: android

如果购物车中的数量已经为1,但我尝试仅用数量更新购物车,但它将无法正常工作。我的购物车阵列不会更新。

这是我的viewHolder类,其中的数组menuItemArrayList由产品组成,而数组selectionItemArrayList是购物车。可以很好地计算出购物车中产品总和的整数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);
                }
            });

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

1 个答案:

答案 0 :(得分:2)

Equals不能那样工作,而不是

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

使用:

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