1

ラジオ グループに追加し、線形レイアウトに追加されるラジオ ボタンの値を取得しようとしています。次に、アクティビティからクラスを呼び出します。これは私のコードです:

MultiChoice.java

public class MultipleChoice {

Context context;
List<String> choice_values;
String hint;

public MultipleChoice (Context context, String hint,  List<String> choice_value_array){
    choice_values = new ArrayList<String>();
    this.context = context;
    this.choice_values = choice_value_array;
    this.hint = hint;
}

public View createRadioGroup(){
    LinearLayout llContainer = new LinearLayout(context);
    llContainer.setOrientation(LinearLayout.VERTICAL);
    llContainer.addView(hintTextView());
    llContainer.addView(radioButtons());
    return llContainer;
}

private TextView hintTextView() {
    // TODO Auto-generated method stub
    TextView tvHint = new TextView(context);
    tvHint.setText(hint);
    return tvHint;
}

private RadioGroup radioButtons() {
    // TODO Auto-generated method stub
    RadioGroup rbGroup = new RadioGroup(context);
    rbGroup.setOrientation(RadioGroup.VERTICAL);
    for (String value : choice_values){
        RadioButton rbValue = new RadioButton(context);
        rbGroup.addView(rbValue);
        rbValue.setText(value);
    }
    return rbGroup;
}
}

これは、アクティビティでコントロールを作成する方法です。

LinearLayout template_container = (LinearLayout) findViewById(R.id.llTemplate);
MultipleChoice mcControl = new MultipleChoice(getApplicationContext(), parts[0], choices);
control = mcControl.createRadioGroup();
template_container.addView(control);

私はこのようなことを試しましたが、うまくいかないので正しいアプローチを試みているかどうかわかりません:

View child = template_container.getChildAt(i);
LinearLayout v = ((LinearLayout)child);
View rgView = v.getChildAt(1);
RadioGroup rg = ((RadioGroup)rgView);

RadioGroupが追加され、正常に表示されます。やりたいことは、選択したラジオ ボタンの値を取得することだけです。前もって感謝します!

編集

これが an の値を取得する方法であり、EditText正常に機能します。

コントロールを取得して、ビューを含むリストに追加し、ビューに次のものが含まれている場合は値を取得するためにこれを行いますEditText

String text = ((EditText)view).getText().toString().trim();
4

4 に答える 4

0

プログラムでラジオボタンにIDを設定できます。こちらをご確認ください

Android: プログラムで View.setID(int id) - ID の競合を回避するには?

次に、findviewbyId を使用してラジオ ボタンを取得します。

于 2014-02-26T11:31:48.727 に答える
0

これを試すことができます: 最初に id を radiogroup に追加します: android:id="@+id/radiogroup"

RadioGroup rbGroup = (RadioGroup)findViewById(R.id.radiogroup);

int RadioButtonId=rbGroup.getCheckedRadioButtonId();
        View radioButton = rbGroup.findViewById(RadioButtonId);

        String = Integer.toString(rbGroup.indexOfChild(radioButton)+1);

以下を使用して、プログラムで ID を追加することもできます。

View.setId(int id);
于 2014-02-26T11:37:18.407 に答える