【问题标题】:Checkbox check add price复选框勾选添加价格
【发布时间】:2018-11-10 16:35:18
【问题描述】:

我正在尝试做一个允许用户选择项目并且应用程序能够计算总成本的 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);

【问题讨论】:

  • 请添加您尝试使用的代码
  • 如果你分享你的代码,我会帮忙,我不会为你写整个代码。

标签: android android-studio checkbox


【解决方案1】:

您可以将每个项目的价格保存在每个复选框标签内,然后从那里检索它。
如果复选框未选中,您还需要减去价格并将其从文本视图中删除。
像这样的东西,虽然我无法测试这段代码:

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

【讨论】:

    【解决方案2】:

    也许你想要这样的东西:

    //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;
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 2010-12-15
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多