Флажок проверить добавить цену - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь создать приложение для Android, которое позволит пользователю выбрать элемент, а приложение сможет рассчитать общую стоимость.

Могу ли я узнать, как добавить сумму к общей стоимости, когда установлен флажок, и как уменьшить сумму, если она не отмечена? Тч

checkBoxListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Topping = (TextView)findViewById(R.id.textView_TopAns);
            Topping.setText(" ");

            if(ChkCheese.isChecked()){
                Topping.setText(Topping.getText().toString() + ChkCheese.getText().toString());
                ToppingPrice += 2.5;
                TotalPrice = SizePrice + CrustPrice + ToppingPrice;
                Price.setText("RM" + TotalPrice );
            }

            if(ChkMushroom.isChecked()){
                Topping.setText(Topping.getText().toString() + "," + ChkMushroom.getText().toString());

                ToppingPrice += 1;
                TotalPrice = SizePrice + CrustPrice + ToppingPrice;
                Price.setText("RM" + TotalPrice );
            }

            if(ChkChicken.isChecked()){
                Topping.setText(Topping.getText().toString() + "," + ChkChicken.getText().toString());
                ToppingPrice += 2;
                TotalPrice = SizePrice + CrustPrice + ToppingPrice;
                Price.setText("RM" + TotalPrice );
            }
            if(ChkBeef.isChecked()){
                Topping.setText(Topping.getText().toString() + "," + ChkBeef.getText().toString());
                ToppingPrice += 4;
                TotalPrice = SizePrice + CrustPrice + ToppingPrice;
                Price.setText("RM" + TotalPrice );
            }
            if(ChkPepperoni.isChecked()){
                Topping.setText(Topping.getText().toString() + "," + ChkPepperoni.getText().toString());
                ToppingPrice +=3.5;

                TotalPrice = SizePrice + CrustPrice + ToppingPrice;
                Price.setText("RM" + TotalPrice );
            }
            if(ChkOlive.isChecked()){
                Topping.setText(Topping.getText().toString() + "," + ChkOlive.getText().toString());
                ToppingPrice += 2;
                TotalPrice = SizePrice + CrustPrice + ToppingPrice;
                Price.setText("RM" + TotalPrice );
            }
            if(ChkPineapple.isChecked()){
                Topping.setText(Topping.getText().toString() + "," + ChkPineapple.getText().toString());
                ToppingPrice += 1;
                TotalPrice = SizePrice + CrustPrice + ToppingPrice;
                Price.setText("RM" + TotalPrice );
            }


        }
    } ;
    ChkCheese.setOnClickListener(checkBoxListener);
    ChkMushroom.setOnClickListener(checkBoxListener);
    ChkBeef.setOnClickListener(checkBoxListener);
    ChkPineapple.setOnClickListener(checkBoxListener);
    ChkOlive.setOnClickListener(checkBoxListener);
    ChkPepperoni.setOnClickListener(checkBoxListener);
    ChkChicken.setOnClickListener(checkBoxListener);

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Вы можете сохранить цену каждого элемента внутри каждого тега флажков и получить его оттуда.
Также вам нужно вычесть цену, если флажок снят, и убрать ее из текстового представления.
Примерно так, хотя я не могу проверить этот код:

ChkCheese.setTag("2.5");
ChkMushroom.setTag("1.0");
ChkBeef.setTag("4.0");
ChkPineapple.setTag("1.0");
ChkOlive.setTag("2.0");
ChkPepperoni.setTag("3.5");
ChkChicken.setTag("2.0");

checkBoxListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Topping = (TextView)findViewById(R.id.textView_TopAns);
        Topping.setText("");

        CheckBox cb = (CheckBox) v;

        double itemPrice = Double.parseDouble(cb.getTag().toString());

        String newText = Topping.getText().toString();
        if (!cb.isChecked()) {
            itemPrice *= -1.0;
            newText = newText.replace(cb.getText().toString(), "").replace(",,", ",");
            if (newText.indexOf(",") == 0 && newText.length() > 1) newText = newText.substring(1);
            Topping.setText(Topping.getText().toString() + "," + cb.getText().toString());
        } else {
            Topping.setText(newText + "," + cb.getText().toString());
        }

        ToppingPrice += itemPrice;
        TotalPrice = SizePrice + CrustPrice + ToppingPrice;
        Price.setText("RM" + TotalPrice );
    }
} ;
ChkCheese.setOnClickListener(checkBoxListener);
ChkMushroom.setOnClickListener(checkBoxListener);
ChkBeef.setOnClickListener(checkBoxListener);
ChkPineapple.setOnClickListener(checkBoxListener);
ChkOlive.setOnClickListener(checkBoxListener);
ChkPepperoni.setOnClickListener(checkBoxListener);
ChkChicken.setOnClickListener(checkBoxListener);
0 голосов
/ 09 ноября 2018

Может быть, вы хотите что-то вроде этого:

//global var
int total = 0;
(...)
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
    Object tag = buttonView.getTag();
    //This tag can be the numeric value you want, can be setted on xml or programatically
    if ( isChecked )
    {
         total += (int)tag;
    }
    else
    {
         total -= (int)tag;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...