我正在尝试创建一个电子商务应用。目前,我正在创建购物车fragment
。因此,我设法将商品添加到购物车并显示在CartFragment
中。但是问题是,当增加一个产品的数量并检查所有产品时,总价格变为仅添加了产品数量的总价格。当所有产品的数量均为一时,总价将计算清单中所有产品的价格。
计算价格代码:
// All checkboxes must be checked
holder.checkBox.setChecked(true);
if (holder.checkBox.isChecked()) {
int currentQty = dataItemCartList.get(position).getQuantity();
if (currentQty > 0) {
total_all_item += productList.get(position).getFinalPrice();
listener.setTotalPrice(total_all_item * currentQty);
}
}
// If user want to remove checklist in checkbox
holder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (holder.checkBox.isChecked()) {
int currentQty = dataItemCartList.get(position).getQuantity();
int finalQty = currentQty + 1;
dataItemCheckout.setCurrentPrice(dataItemCartList.get(position).getCurrentPrice());
dataItemCheckout.setLastPrice(dataItemCartList.get(position).getLastPrice());
dataItemCheckout.setQuantity(dataItemCartList.get(position).getQuantity());
dataItemCheckout.setNotes(dataItemCartList.get(position).getNotes());
dataItemCheckoutList.add(dataItemCheckout);
productCheckout.setPriceAfterDiscount(productList.get(position).getPriceAfterDiscount());
productCheckout.setPriceRegular(productList.get(position).getPriceRegular());
productCheckoutList.add(productCheckout);
total_all_item += productList.get(position).getFinalPrice();
listener.onItemCheck(dataItemCart, productCart, dataItemCheckoutList, productCheckoutList);
listener.setTotalPrice(total_all_item * currentQty);
} else {
int currentQty = dataItemCartList.get(position).getQuantity();
int finalQty = currentQty - 1;
dataItemCheckoutList.remove(dataItemCheckout);
productCheckoutList.remove(productCheckout);
total_all_item -= productList.get(position).getFinalPrice();
listener.onItemUncheck(dataItemCart, productCart, dataItemCheckoutList, productCheckoutList);
listener.setTotalPrice(total_all_item * currentQty);
}
}
});
private int totalPriceAll(List<Product> total_all) {
int total_price_per_item = 0;
for (int i = 0; i < total_all.size(); i++) {
total_price_per_item += total_all.get(i).getFinalPrice();
}
return total_price_per_item;
}
holder.btnPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (holder.checkBox.isChecked()) {
int total_harga = productList.get(position).getFinalPrice();
int currentQty = dataItemCartList.get(position).getQuantity();
int finalQty = currentQty + 1;
int finalPrice = finalQty * total_harga;
dataItemCartList.get(position).setQuantity(finalQty);
productList.get(position).setFinalPrice(finalPrice);
listener.setTotalPrice(finalPrice);
holder.tvQuantity.setText(finalQty + "");
} else {
int total_harga = productList.get(position).getFinalPrice();
int currentQty = dataItemCartList.get(position).getQuantity();
int finalQty = currentQty + 1;
int finalPrice = finalQty * total_harga;
dataItemCartList.get(position).setQuantity(finalQty);
productList.get(position).setFinalPrice(finalPrice);
holder.tvQuantity.setText(finalQty + "");
}
}
});
holder.btnMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (holder.checkBox.isChecked()) {
int total_harga = productList.get(position).getFinalPrice();
int currentQty = dataItemCartList.get(position).getQuantity();
int finalQty = currentQty - 1;
int finalPrice = finalQty * total_harga;
if (finalQty < 1) {
Toast.makeText(context, "Minimal satu item untuk pembelian", Toast.LENGTH_SHORT).show();
} else {
dataItemCartList.get(position).setQuantity(finalQty);
productList.get(position).setFinalPrice(finalPrice);
listener.setTotalPrice(finalPrice);
holder.tvQuantity.setText(finalQty + "");
}
} else {
int total_harga = productList.get(position).getFinalPrice();
int currentQty = dataItemCartList.get(position).getQuantity();
int finalQty = currentQty - 1;
int finalPrice = finalQty * total_harga;
if (finalQty < 1) {
Toast.makeText(context, "Minimal satu item untuk pembelian", Toast.LENGTH_SHORT).show();
} else {
dataItemCartList.get(position).setQuantity(finalQty);
productList.get(position).setFinalPrice(finalPrice);
holder.tvQuantity.setText(finalQty + "");
}
}
}
});
您能否添加setTotalPrice()
方法的代码段?还请弄清楚在哪里调用totalPriceAll()
方法?