サイト移転のお知らせ:http://techbooster.org/に移転しました

RadioButtonで複数の選択肢から1つだけ選択する

1月 19, 2011   //   by kkato   //   ユーザインターフェース  //  1 Comment

Androidには複数の選択肢から1つだけ選択するためのRadioButtonクラスがあります。

CheckBoxクラスと似たようなUI部品ですが、CheckBoxクラスの異なる点は、今回のタイトルにもあるように一つだけ選択できることです。

サンプルコードはこちらになります。

それでは続きでサンプルコードと共に説明していきます。

RadioGroupクラス/RadioButtonクラス

複数のRadioButtonクラスをグループ化するのがRadioGroupクラスです。

一つのRadioGroupに登録されているRadioButtonクラスは、どれか一つしか選択できません。

例えば、ボタン1~4までの4つのボタンが同じ一つのRadioGroupに登録されている場合に、1が選択されていて、その次に3を選択すると1の選択は解除されます。


今回はレイアウトのxmlファイルに1つのRadioGroupに4つのRadioButtonを登録します。
もしソースコードから行う場合はRadioGroupのオブジェクトにRadioButtonをaddViewします。

<RadioGroup android:layout_height="wrap_content"
	android:layout_width="wrap_content"
	android:id="@+id/RadioGroup">
	<RadioButton android:text="1番目"
		android:id="@+id/RadioButton01"
		android:layout_height="wrap_content"
		android:layout_width="wrap_content">
		</RadioButton>
	<RadioButton android:text="2番目"
		android:id="@+id/RadioButton02"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content">
		</RadioButton>
	<RadioButton android:text="3番目"
		android:id="@+id/RadioButton03"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content">
		</RadioButton>
	<RadioButton android:text="4番目"
		android:id="@+id/RadioButton04"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content">
		</RadioButton>
	</RadioGroup>

選択されているボタンが変わった時に通知を受けとる

何が選択されているかはRadioGroupクラスのgetCheckedRadioButtonIdメソッドの戻り値でIDを知ることができます。何も選択されていない時は-1が返ってきます。

また、選択されたボタンが変わっときに通知を受け取ることも可能です。RadioGroupにOnCheckedChangeListenerを登録します。IDで変わったボタンが分かります。

getCheckedRadioButtonIdメソッドと同様にクリア(メソッドは後述)されて何も選択されていない場合はIDに-1が渡ってきます。

        radioGroup_ = (RadioGroup)findViewById(R.id.RadioGroup);
        radioGroup_.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			@Override
			public void onCheckedChanged(RadioGroup group, int id) {
				if (-1 == id) {
					Toast.makeText(MainActivity.this,
							"クリアされました",
	                        Toast.LENGTH_SHORT).show();
				} else {
					Log.d("MainActivity", "");
					Toast.makeText(MainActivity.this,
	                        ((RadioButton)findViewById(id)).getText()
	                        	+ "が選択されました",
	                        Toast.LENGTH_SHORT).show();
				}
			}
        });

選択を解除する/任意のボタンを選択する

場合によっては選択状態を直接変更したいこともあると思います。その場合は、RadioGroupのcheckメソッドで任意のボタンを選択可能です。
また、clearCheckメソッドで選択を解除することが可能です。

関連する記事:

Sponsored Link

1 Comment

技術書新刊 発売中

アンドロイドアカデミアには、CIやテスト、互換検証など実務に生きるノウハウをあつめています

技術書新刊 発売中

Android Next!はAndroid 7.0に対応したはじめての技術書です!


The Web Explorer 2はCSSの中央寄せやWebAudioなど未来を読み解く一冊です


Revised TypeScript in DefinitelylandはTypeScript 2.0(β)に対応した解説書です。インストールから型定義まで幅広くサポートしています


技術書をかこう!はエンジニアらしい執筆環境を構築、HowTo本です