2

私はAndroidを初めて使用し、次のようなxmlを使用しています。

<RadioGroup
        android:id="@+id/cardRadioGroup"
        android:layout_width="wrap_content"
        android:layout_height="45dp" android:layout_alignParentLeft="true" android:layout_marginLeft="35dp"
        android:layout_alignTop="@+id/cardEditText">
</RadioGroup>

データモデルに応じて必要な数のラジオボタンを生成するために、コードを使用してこのxmlを膨らませようとしています。

私が使用するコードは(forループ内にあります):

        LayoutInflater inflater = this.getLayoutInflater();
        View currentView = inflater.inflate(R.layout.card_payment_content_node,null);

        RadioGroup rg = (RadioGroup) currentView.findViewById(R.id.cardRadioGroup);
        RadioButton rb =  new RadioButton(this);
        //set radiobutton properties
        rb.setText(entry.getKey());
        rb.setId(++radioButtonIdCounter);

        rg.addView(rb);

        //add to view
        parent.addView(currentView);

これは期待どおりに機能しています。しかし、問題は、デバイスで一度に多くのラジオボタンを選択できることです。

なぜこれが起こっているのかわかりません。どこで間違いを犯しているのですか?

前もって感謝します。

4

1 に答える 1

7

すべてのボタンが同じ ID を持っています。それが彼らがとても均一に行動する理由です。

レイアウトを一度だけインフレートします。cardRadioGroupコードを識別してループし、すべてのボタンに一意の ID を生成することにより、プログラムでボタンを追加する必要があります。

グループにラジオ ボタンを追加するには、RadioGroup.addview()を使用します。

ラジオ ボタンを作成するには、RadioButtonのコンストラクタの 1 つを使用し、必要に応じてさらにプロパティを設定します。

于 2013-02-07T07:42:44.117 に答える