Установка значения текста на основе только выбранного элемента счетчика - PullRequest
1 голос
/ 18 октября 2019

У меня есть этот код, который я хотел бы использовать для обновления стоимости товаров на основе зоны доставки, выбранной в счетчике.

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. Первый элемент выбирается по умолчанию при запуске операции, и его стоимость используется, тогда стоимость продолжает увеличиваться, когда пользователь выбирает другую зону, которая, конечно, имеет другую стоимость, то есть еслистоимость товара плюс налог составляет 100 на нагрузку, totalCost становится равным 150 (стоимость доставки до первого местоположения равна 50), когда пользователь выбирает другую зону, стоимость доставки которой, скажем, 100, общая стоимость становится 250, а не 200, поскольку она добавляется непосредственно кпервоначальное значение, которое составляло стоимость предмета плюс стоимость доставки в первую зону, а теперь стоимость доставки во вновь выбранные зоны.

Можно ли как-нибудь исправить это?

Спасибо

Ответы [ 2 ]

1 голос
/ 18 октября 2019
*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));

}
1 голос
/ 18 октября 2019

Вам необходимо сохранить базовую стоимость предмета - без доставки, скажем так:

Double basePrice = //get it from your database

и затем обновить общую стоимость:

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

вместо накопленияцена, как вы делаете с оператором +=.

...