2021年2月26日金曜日

ラジオボタンで選択中の文言を取得する

Androidでラジオボタンを使う際
選択中のラジオボタンの情報がほしくなることがある。
方法として
  • 公式通り、各ラジオボタンのクリック処理を実装し、 押されたタイミングで情報をローカル変数に保持しておく
  • 各ラジオボタンにisChecked()を実行していき、チェックONのラジオボタンを探す
  • RadioGroupのOnCheckedChangeListenerで変化を監視
どれもローカル変数を用意したり、全Viewチェックしたりで効率的でない。
今回はRadioGroupのAPI仕様を見てたら、丁度良さそうなのがあったので紹介。


getCheckedRadioButtonId

RadioGroupのgetCheckedRadioButtonId()メソッドを使うと
選択されているラジオボタンのViewIDが取得できる。(未選択時は-1が返る)
このIDからラジオボタンを取得し、getText()で文字列情報も持ってこれる


サンプルコード

こんな感じ
■Java版
RadioGroup group = findViewById(R.id.radioGroup);
RadioButton select = group.findViewById(group.getCheckedRadioButtonId());
String text = (select == null) ? "未選択" : select.getText().toString();
■Kotlin版
val text = radioGroup?.run {
    findViewById<TextView>(checkedRadioButtonId)?.text }?: "未選択"
}

0 件のコメント:

コメントを投稿