1

一連のチェックボックスを動的に生成しています。

ここに画像の説明を入力

そこからチェックボックスのいずれかをチェックできます:

ここに画像の説明を入力

別のチェックボックスをクリックしたときにチェックボックスをオフにするにはどうすればよいですか?

編集済み

ここで RadioGroup の実装を追加し、 IllegalStateException final LinearLayout firstRowTxtLayout = new LinearLayout(fContext); を取得しています。firstRowTxtLayout.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));

    rbGroup.setLayoutParams(new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT));
    rbButton = new RadioButton(fContext);
    rbButton.setLayoutParams(new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT));
    rbButton.setId(rbTagincreament);
    rbGroup.addView(rbButton);

次に、この radioGroup を別のメインの線形レイアウトに追加しています

firstRowTxtLayout.addView(rbGroup); here i am getting the exception
4

3 に答える 3

5

ここに画像の説明を入力

カスタム RadioButton で RadioGroup を使用しましたが、RadioButton を Checkbox に変更しました。RadioButton のみ、つまり単一選択のみのように動作します。

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/linearlayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </LinearLayout>

</LinearLayout>

MainActivity.java

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        LinearLayout linear=(LinearLayout) findViewById(R.id.linearlayout);

        final RadioButton[] rb = new RadioButton[5];
        RadioGroup rg = new RadioGroup(this); //create the RadioGroup
        rg.setOrientation(RadioGroup.VERTICAL);//or RadioGroup.VERTICAL
        for(int i=0; i<5; i++){
            rb[i]  = new RadioButton(this);
            rb[i].setButtonDrawable(R.drawable.single_radio_chice);
            rg.addView(rb[i]); 

        }
        LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.FILL_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
        );
        p.setMargins(10, 10, 10, 10);
        linear.addView(rg,p);

    }

セレクタ

single_radio_chice

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_checked="false" 
        android:drawable="@drawable/check_off" />

    <item android:state_checked="true" 
        android:drawable="@drawable/check_on" />
</selector>

これがあなたを助けることを願っています。

于 2013-03-11T17:00:10.730 に答える
2

別の変数ですべてのチェックボックスの参照を取得します。

satView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

   @Override
   public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
          if(isChecked) {
            checkBox.setChecked(false); //Here call this method on all checkbox except you want to check single checkbox.
        }
   }
}

しかし、より良いアプローチは、ラジオボタンを使用するRadioGroupRadioButton、ユーザーがセットから1つのオプションを選択できるためです。ここを読んでください。

于 2013-03-11T16:05:00.503 に答える
1

動的に作成されたすべてRadioButtonsを配列に入れます。それらの1つをチェックすると、他のすべてを調べて、setChecked(false);

前述RadioGroupのように、解決策にもなります。ImageViewsしかし、何らかの理由で、またはTextViewの間に他のオブジェクトを配置したい場合は使いにくいことがわかりましたRadioButtons

于 2013-03-11T16:03:03.550 に答える