2016-07-28 8 views
3

以下のようにラジオボタンを動的に追加しました。動的に追加されたラジオボタンの選択されたインデックスを取得する方法

for (int i = 0; i< typeArrayList.size(); i++) { 
        radioButtons[i] = new RadioButton(MainActivity.this); 
        radioButtons[i].setId(i); 
        radioButtons[i].setText(typeArrayList.get(i).toString()); 
        if(i==0) { 
         radioButtons[i].setChecked(true); 
        } 
        typeLayout.addView(radioButtons[i]); 
       } 

ボタンをクリックすると、動的に追加されたラジオボタンの選択された項目(テキスト)が渡されるメソッドが呼び出されます。どのように動的に追加されたラジオボタンに対して選択されたラジオボタンテキストを取得できますか?

+0

あなたのソリューションをチェックしましたか? –

答えて

0

radioButtons arrayに動的に作成したRadioButtonsをすべて保存しました。
は、だからあなたはあなたができるループすべてこの配列を選択するラジオボタンを知っているし、各RadioButton

for (int i = 0; i< radioButtons.size(); i++) { 
    if(radioButtons[i].isChecked()){ 
     // selected radio button is here 
     String text = radioButtons[i].getText(); 
    } 
} 
0

これは単にタグを使用して達成することができます確認したい場合。

RadioButtonを追加するときに、その特定のオブジェクトをタグに設定します。あなたのケースでは、ラジオボタンのテキストであるためにタグを設定し、

radioButtons[i].setTag(typeArrayList.get(i).toString()); 

この方法で、すべてのラジオボタンは、タグとして彼らに関連したテキストを持つことになります。

特定のラジオボタンが選択されたときに、関連するテキストを表示するタグを取得するだけです。

String text = (String) selectedRadioButton.getTag(); 

希望します。

0

まず、あなたのビューのすべての子を取得する必要があります。次に、このビューがRadioButtonであるかどうかを確認します。最後にチェックされたボタンをチェックします。

int childcount = typeLayout.getChildCount(); 
for (int i=0; i < childcount; i++){ 
     View view = typeLayout.getChildAt(i); 
     if (view instanceof RadioButton) { 
      if(((RadioButton)view).isChecked()) { 
       RadioButton yourCheckedRadioButton = (RadioButton) typeLayout.getChildAt(i); // this is your checked RadioButton 
      } 
     } 
} 
0

@Komali Shirumavilla

ので

RadioGroup rg = new RadioGroup(this); //create the RadioGroup 
rg.setOrientation(RadioGroup.HORIZONTAL);//or RadioGroup.VERTICAL 
for (int i = 0; i< typeArrayList.size(); i++) { 
radioButtons[i] = new RadioButton(MainActivity.this); 
radioButtons[i].setId(i); 
radioButtons[i].setText(typeArrayList.get(i).toString()); 
if(i==0) { 
    radioButtons[i].setChecked(true); 
} 
rg.addView(radioButtons[i]); // add dynamic radio buttons to radio group 
} 
typeLayout.addView(rg); // add radio group to view 

あなたのコードに次の行を追加しますが、今RadioGroup

rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       switch(checkedId) { 
        RadioButton btn = (RadioButton)findViewById(checkedId); 
        Log.d("Your selected radio button id",btn.getText()); 
       } 
      } 
     }); 
1

setOnCheckedChangeListenerを設定ラジオグループ にそれらの動的なラジオボタンを追加します。そのことは非常に重要ですラジオグループにボタンを追加するときは、ラジオボタンのIDを指定します。

RadioButton rb = new RadioButton(context); 
rb.setText(option); 
rb.setId(rb.hashCode()); 
radioGroup.addView(rb); 
radioGroup.setOnCheckedChangeListener(mCheckedListner); 

ここで、クリックリスナーで一意のIDを確認します。

private RadioGroup.OnCheckedChangeListener mCheckedListner = new RadioGroup.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     JSONArray actionArray = new JSONArray(); 
     if(group.findViewById(checkedId)!=null) { 
      RadioButton rb = ((RadioButton) group.findViewById(checkedId)).getText(); 
//Your Code here 
       } 
      } 
     } 
    }; 
関連する問題