การตั้งค่าข้อความตามรายการสปินเนอร์ที่เลือกเท่านั้น

ฉันมีรหัสนี้ที่ฉันต้องการใช้เพื่ออัปเดตต้นทุนของสินค้าตามโซนการจัดส่งที่เลือกในตัวหมุน

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 ต้นทุนรวมจะกลายเป็น 150( ค่าจัดส่งไปยังตำแหน่งแรกคือ 50) เมื่อผู้ใช้เลือกโซนอื่นซึ่งมีค่าจัดส่งเป็น 100 ต้นทุนทั้งหมดจะกลายเป็น 250 และไม่ใช่ 200 เนื่องจากจะเพิ่มเข้ากับค่าเริ่มต้นโดยตรงซึ่งประกอบด้วยต้นทุนของรายการบวกต้นทุนของ จัดส่งไปยังโซนแรกและตอนนี้ต้นทุนการจัดส่งไปยังโซนที่เลือกใหม่

มีวิธีใดบ้างที่ฉันสามารถแก้ไขได้?

ขอบคุณ


person The Only Smart Boy    schedule 18.10.2019    source แหล่งที่มา


คำตอบ (2)


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

}
person Jane Alam    schedule 18.10.2019

คุณต้องรักษามูลค่าพื้นฐานของสินค้า - โดยไม่ต้องจัดส่ง พูดดังนี้:

Double basePrice = //get it from your database

แล้วอัพเดตราคารวม:

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

แทนที่จะสะสมราคาเหมือนกับที่คุณทำกับตัวดำเนินการ +=

person TDG    schedule 18.10.2019