Menetapkan nilai teks hanya berdasarkan item spinner yang dipilih

Saya memiliki kode ini yang ingin saya gunakan untuk memperbarui harga barang berdasarkan zona pengiriman yang dipilih di spinner.

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));

}

Nilai totalCost harus berupa biaya barang ditambah pajak ditambah biaya pengiriman untuk zona yang dipilih. Sekarang masalah saya adalah itu

  1. Item pertama dipilih secara default pada permulaan aktivitas dan biaya yang digunakan kemudian biaya terus bertambah ketika pengguna memilih zona berbeda yang tentu saja memiliki biaya berbeda yaitu jika biaya item ditambah pajak adalah 100 onload maka totalCost menjadi 150( biaya pengiriman ke lokasi pertama adalah 50) ketika pengguna memilih zona berbeda yang biaya pengirimannya katakanlah 100, total biaya menjadi 250 dan bukan 200 karena menambah langsung ke nilai awal yang terdiri dari biaya barang ditambah biaya pengiriman ke zona pertama dan sekarang biaya pengiriman ke zona yang baru dipilih.

Apakah ada cara saya bisa memperbaiki ini?

Terima kasih


person The Only Smart Boy    schedule 18.10.2019    source sumber


Jawaban (2)


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

totalCost += menambahkan nilai baru dengan nilai lama

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));

}
person Jane Alam    schedule 18.10.2019

Anda harus menjaga nilai dasar barang tersebut - tanpa pengiriman, katakan seperti ini:

Double basePrice = //get it from your database

lalu perbarui harga total:

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

alih-alih mengumpulkan harga seperti yang Anda lakukan dengan operator +=.

person TDG    schedule 18.10.2019