2014-02-12 149 views
0

我正在開發一個android服務器數據庫的比賽(多選擇類型)。 有多個選擇答案的問題(每個4個)。通過創建下面的代碼Android動態單選按鈕獲取值

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

問題現在點擊一個按鈕,我需要的答案發送到服務器。我是新來的android和我的疑惑是

  1. 是否有任何選項來設置值,以每個單選按鈕?
  2. 如何讓點擊按鈕中的選定單選按鈕?

在此先感謝

+0

你試圖'setTag(「某些價值」)'以單選按鈕?並在按鈕上單擊調用'getTag()'..我從來沒有用它單選按鈕,但我希​​望它會工作。告訴我,如果它不是 – yakhtarali

+0

感謝您的幫助。我試過了。但是在按鈕上單擊,如何獲取所有單選按鈕檢查值? – ramesh

+0

嘗試像這樣'RadioButton radio =(RadioButton)v; 。\t \t \t \t \t \t \t \t \t \t字符串結果= radio.getTag()的toString();」 – yakhtarali

回答

1

可以先在佈局中創建按鈕:

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

[1]在這裏你可以建立你的邏輯通過結合問題ID和選項ID即(QID + opt_a_id)= ID並解碼它在哪裏gid = radioButtonid - opt_a_id這樣的射擊你做一個ID是唯一的,可以解碼,讓你知道這個radioButton屬於這個問題 類似地,您可以使用標籤在findViewWithTag(「qid」+「opt_a」)的幫助下獲取視圖對象; 你可以做到這一點

RadioButton rb = layout.findViewWithTag("qid"+"opt_a"); 

,並把所有的問題和答案,你可以設置foreach循環:

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

是的,謝謝。但我得到了1個以上的問題。如何讓循環中的radiogroup獲得值? – ramesh

+0

你想在一個屏幕上顯示多個問題嗎? –

+0

是的..有超過1 – ramesh