电商Android应用商品数量减少按钮计算逻辑异常问题求助
问题分析与修复方案
兄弟,你的商品数量减少功能异常的原因一眼就能看出来——减号按钮的总价计算逻辑写错了!
先看你minusBtn的点击事件代码:
minusBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (numberOrder > 1) { numberOrder = numberOrder - 1; } numberOrderTxt.setText(Integer.toString(numberOrder)); feeTxt.setText(Integer.toString(price - itemPrice)); } });
这里你用price - itemPrice计算减少后的总价完全不符合逻辑:
- 从你选择规格的代码能看到,
price和itemPrice其实是同一个值(比如选小规格时,两者都被赋值为object.getPrice()),这个计算要么得到0,要么就是直接减去单个商品价格,完全没结合当前的商品数量。 - 正确逻辑应该和加号按钮保持一致:用调整后的
numberOrder乘以当前选中的商品单价price,得到最新总价。
修复后的代码
把减号按钮的点击事件改成这样:
minusBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (numberOrder > 1) { numberOrder = numberOrder - 1; // 数量变化后重新计算总价 feeTxt.setText(Integer.toString(numberOrder * price)); } numberOrderTxt.setText(Integer.toString(numberOrder)); } });
额外优化建议
你可以把总价计算逻辑抽成单独方法,避免重复代码,后续维护也更方便:
private void updateTotalPrice() { feeTxt.setText(Integer.toString(numberOrder * price)); }
之后在加号按钮、减号按钮、规格选择的onClick方法里,直接调用updateTotalPrice()就能更新总价了。
这样修改后,点击减号按钮就会正确根据当前数量计算总价,不会再出现直接减全额单价的问题啦。
内容的提问来源于stack exchange,提问作者Sibtain Shahbaz
相关产品推荐
相关产品推荐

