Android动态单选按钮获取值

Android动态单选按钮获取值,android,radio-button,Android,Radio Button,我正在开发一个带有服务器数据库的android竞赛(选择题类型)。 有许多问题和多项选择答案(每个4个)。通过以下代码创建问题 try { JSONArray array = (JSONArray) new JSONTokener(questions).nextValue(); TextView active=(TextView)findViewById(R.id.active); active.setText(description);

我正在开发一个带有服务器数据库的android竞赛(选择题类型)。 有许多问题和多项选择答案(每个4个)。通过以下代码创建问题

try {
        JSONArray array = (JSONArray) new JSONTokener(questions).nextValue();



        TextView active=(TextView)findViewById(R.id.active);
        active.setText(description);
        active.setVisibility(View.VISIBLE);
        LinearLayout ll=(LinearLayout)findViewById(R.id.questions_lay);

          for(int i=0;i<array.length();i++) {
              JSONObject question = array.getJSONObject(i);
              Integer id=question.getInt("id");


              TextView title = new TextView(this);
               title.setText(question.getString("ques"));
               title.setTextColor(Color.parseColor("#FFFFFF"));
               ll.addView(title);

               final RadioButton[] rb = new RadioButton[4];
               RadioGroup rg = new RadioGroup(this);
               rg.setOrientation(RadioGroup.VERTICAL);

               rb[0] = new RadioButton(this);
               rb[0].setText(question.getString("opt_a"));

               rb[1] = new RadioButton(this);
               rb[1].setText(question.getString("opt_b"));
               rb[2] = new RadioButton(this);
               rb[2].setText(question.getString("opt_c"));
               rb[3] = new RadioButton(this);
               rb[3].setText(question.getString("opt_d"));

               rg.addView(rb[0]);
               rg.addView(rb[1]);
               rg.addView(rb[2]);
               rg.addView(rb[3]);

               ll.addView(rg);
          }

          ll.setVisibility(View.VISIBLE);
            overLay.setVisibility(View.GONE);




    } catch (JSONException e) {
        // handle JSON parsing exceptions...
        Toast.makeText(ContestActivity.this,"Error Occured ! Please try again.",Toast.LENGTH_SHORT).show();
        cd.goHome(ContestActivity.this);
            e.printStackTrace();
    }
试试看{
JSONArray数组=(JSONArray)新的JSONTokener(questions).nextValue();
TextView活动=(TextView)findViewById(R.id.active);
active.setText(描述);
active.setVisibility(View.VISIBLE);
LinearLayout ll=(LinearLayout)findViewById(R.id.questions\u lay);

对于(int i=0;iok),首先在布局中创建一个按钮:

1) 你的问题在这里

  • 项目1
  • 项目2
  • 项目3
  • 项目4

    点击我按钮

这是您的布局:

现在,如果要将某些值设置为单选按钮,请通过setTag或setId,然后在代码中进行设置:

final RadioButton[] rb = new RadioButton[4];
rb[1].setTag("some value");
rb[1].setId(1);
int arrayQID[] = new Int[array.length()];
然后单击按钮的“侦听器”

int selectedId = rg.getCheckedRadioButtonId();
RadioButton radioButton = (RadioButton) layout.findViewById(selectedId);
String value = (String)radioButton.getTag();
int value2 = radioButton.getId();

    for(int i=0;i<array.length();i++) {
          JSONObject question = array.getJSONObject(i);
          Integer id=question.getInt("id");


          TextView title = new TextView(this);
           title.setText(question.getString("ques"));
           title.setTextColor(Color.parseColor("#FFFFFF"));
           ll.addView(title);

           final RadioButton[] rb = new RadioButton[4];
           RadioGroup rg = new RadioGroup(this);
           rg.setId(qid); // i suggest set your question id here instead of loop count
           rg.setTag("some value"); // Some value
           arrayQID[i] = qid
           rg.setOrientation(RadioGroup.VERTICAL);

           rb[0] = new RadioButton(this);
           rb[0].setText(question.getString("opt_a"));
           rb.[0].setId(id); //id should be unique (not the same for each radioGroup [1]
           rb.[0].setTag("qid"+"opt_a");
           rb[1] = new RadioButton(this);
           rb[1].setText(question.getString("opt_b"));
           rb[2] = new RadioButton(this);
           rb[2].setText(question.getString("opt_c"));
           rb[3] = new RadioButton(this);
           rb[3].setText(question.getString("opt_d"));

           rg.addView(rb[0]);
           rg.addView(rb[1]);
           rg.addView(rb[2]);
           rg.addView(rb[3]);

           ll.addView(rg);
      }
要获得所有问题和答案,您可以为每个循环设置:

for(int qid : arrayQID) {
    RadioButton rb = layout.findViewWithTag("qid"+"opt_a"); // OR
    RadioButton rb = layout.findViewById(id); // Unique id ie (qid + opt_a_Id)
}

您是否尝试过将标签(“某些值”)
设置为单选按钮?然后单击按钮调用
getTag()
。我从未将其与单选按钮一起使用过,但我希望它能起作用。请告诉我是否感谢您的帮助。我尝试过。但单击按钮后,如何获取所有单选按钮的检查值?请尝试以下“单选按钮”(radiobutton radio=(radiobutton))v;字符串结果=radio.getTag().toString()'谢谢..如何获取数组中的所有放射组?是的,谢谢。但我有不止一个问题。如何在循环中获取放射组并获取值?您是否试图在一个屏幕中显示多个问题?然后我建议您使用expandablelistview或查看我编辑的第二个选项的答案
for(int qid : arrayQID) {
    RadioButton rb = layout.findViewWithTag("qid"+"opt_a"); // OR
    RadioButton rb = layout.findViewById(id); // Unique id ie (qid + opt_a_Id)
}