【问题标题】:How can I know which radio button is selected in Android studio我如何知道在 Android Studio 中选择了哪个单选按钮
【发布时间】:2019-04-04 15:18:50
【问题描述】:

我有 3 个单选按钮,一旦我单击其中任何一个按钮,它应该会更新 2 个文本视图。名称的一个文本视图和价格的其他文本视图。 当我单击单选按钮时,名称会更新,但我面临如何从数组中获取项目价格的问题。每个单选按钮都有不同的定价。

代码:

     pizzaSizeRadioGroup = (RadioGroup) findViewById(R.id.radioGroup);
        pizzaSizeRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
//                Radio button checked
                sizeSelect = (RadioButton) findViewById(checkedId);
                selectedSize.setText(sizeSelect.getTag().toString());

//                how to display the price from array
                sizePrice = array_price_list[].getItem_price();
                totalPriceDisplay.setText(sizePrice);

            }
        });

【问题讨论】:

  • 请不要发布代码、XML 或 logcat 输出的屏幕截图。请将所有文本作为文本发布。
  • 我没有足够的信息。您只需要知道如何获取数组的正确索引吗?因为我不确定你在这里做什么: sizePrice = array_price_list[].getItem_price();
  • @MikeM。当然。谢谢
  • @GavinWright 我会更新它
  • @GavinWright 我有一个项目类,它有 2 个变量:项目名称和项目价格。我向它添加了值,例如私有项目 size_small = new Items ("Small",5);我将所有值添加到一个数组中,现在只想为单选按钮选择 3 个值

标签: java android android-studio textview radio-button


【解决方案1】:

你可以实现 switch Radiogroup checkedId

pizzaSizeRadioGroup = (RadioGroup) findViewById(R.id.radioGroup);

    pizzaSizeRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() 
    {
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            switch(checkedId){
                case R.id.radio0://Radio button id
                    // do operations specific to this selection
                    break;
                case R.id.radio1://Radio button id
                    // do operations specific to this selection
                    break;
                case R.id.radio2://Radio button id
                    // do operations specific to this selection
                    break;
            }   
        }
    });

或选中选中的单选按钮

     int selectedId = pizzaSizeRadioGroup.getCheckedRadioButtonId();

【讨论】:

  • 如何处理:int selectedId = PizzaSizeRadioGroup.getCheckedRadioButtonId();
  • if(selectedid == R1){ array_price_list[0].getItem_price();}else if(selectedid == R2){array_price_list[1].getItem_price();}else if(selectedid = = R3){array_price_list[2].getItem_price();} 等
  • 我试过这样做,但价格的文本视图仍然没有更新
  • 分享你的主类和xml文件
  • 使用 switch case 语句来实现。它工作正常
【解决方案2】:

尚不完全清楚您拥有的价格数组中的值是什么,或者您的 getItem_price() 方法的实现是什么。

但您似乎已经在单选按钮的标签中设置了名称,这就是为什么您能够获取它并填充您的 selectedSize 文本视图。

据我了解您的问题,您可以采用两种方法

方法 1: 创建一个包含名称、价格和 id 的比萨饼对象列表。 在单选按钮的标签中设置 id。这样您就可以使用从radioButton.getTag() 中获得的id 来获取名称和价格。

方法 2: 用 | 连接名称和价格,例如 size1|25 并将其设置为单选按钮的标签。 然后您可以在 getTag 上使用 split 来获取名称和价格。

希望这可以帮助您解决问题。

【讨论】:

  • 我有一个项目类,它有 2 个变量:项目名称和项目价格。我向它添加了值,例如私有项目 size_small = new Items ("Small",5);我将所有值添加到一个数组中,现在只想为单选按钮选择 3 个值
  • 你可以为你的类添加另一个变量,名为 id。然后您可以在单选按钮的标签中设置该 ID。从选定的单选按钮获取标签,您可以使用该 ID 获取相应的名称和价格。但是您需要动态创建广播组并设置标签与您的列表相匹配。
【解决方案3】:

为此您可以使用开关,请遵循此

radiobuttoncheck.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() 
{
    public void onCheckedChanged(RadioGroup rgroup, int r_id) {
        switch(r_id){
            case R.id.rbid1:
                //show toast here to get idea
                break;
            case R.id.rbid2:

               //show toast here to get idea

                break;
        }   
    }
});

【讨论】:

  • 除了switch语句还有其他方法吗?
  • 是的,使用多个 if-s
猜你喜欢
  • 1970-01-01
  • 2010-10-10
  • 2013-01-23
  • 2014-01-04
  • 2021-04-30
  • 2012-09-07
相关资源
最近更新 更多