仅基于选定的微调项设置文本值

Setting text value based on only the selected spinner item

我有这个代码,我想用它来根据在微调器中选择的送货区域更新项目的成本。

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    delivery.setText(getCost(position));
    totalCost += Double.valueOf(delivery.getText().toString());
    total.setText(Double.toString(totalCost));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
    delivery.setText("0.00");
    totalCost -= Double.valueOf(delivery.getText().toString());
    total.setText(Double.toString(totalCost));

}

totalCost 的值应该是商品成本加税加所选区域的送货成本。 现在我的问题是

  1. 默认情况下,第一个项目在 activity 启动时被选中,它的成本被使用,然后当用户选择不同的区域时,成本会不断增加,这当然有不同的成本,即如果项目的成本加上税是 100 onload totalCost 变成 150(运送到第一个位置的费用是 50)当用户选择一个不同的区域,其运送成本是 100 总成本变成 250 而不是 200,因为它直接添加到初始值组成物品的成本加上运送到第一个区域的费用,现在是运送到新选择的区域的费用。

有什么办法可以纠正这个问题吗?

谢谢

您需要保留商品的基本价值-不发货,这样说:

Double basePrice = //get it from your database

然后更新总价:

totalCost = basePrice + Double.valueOf(delivery.getText().toString());

而不是像使用 += 运算符那样累积价格。

*totalCost += replace with totalCost = ...* // problem is in this calculation*

totalCost += 将新值与旧值相加

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    delivery.setText(getCost(position));
//    totalCost += Double.valueOf(delivery.getText().toString());  change here
    totalCost = productPrice + Double.valueOf(delivery.getText().toString()); 
    total.setText(Double.toString(totalCost));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
    delivery.setText("0.00");
    totalCost -= Double.valueOf(delivery.getText().toString());
    total.setText(Double.toString(totalCost));

}