【Android】画面コンポーネント / RadioButton etc ~ 選択肢 ~

■ はじめに

Android で選択するコンポーネントについて、学ぶ。

目次

【1】ラジオボタン / RadioGroup・RadioButton
【2】スピナー(プルダウン) / Spinner
【3】トグルスイッチ / Switch

 【1】ラジオボタン / RadioGroup・RadioButton

 デザイン部に関して

[1] RadioGroup を追加する << ★重要★
[2] [1] の 子供として、RadioButton を追加する

※ デフォルトでチェックを付けたい場合は、「checked : true」

値の取得方法

その1:OnCheckedChangeListener と onCheckedChanged() を使う

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup1);
radioGroup1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
  @Override
  public void onCheckedChanged(RadioGroup group, int checkedId) {
    if (checkedId == -1) {
      return;
    }

    RadioButton selectedRadioButton = (RadioButton) findViewById(checkedId);
    String text = radioButton.getText().toString();
    Log.v("checked", text);
  }
});

その2:getCheckedRadioButtonId()を使う

int checkedId = radioGroup.getCheckedRadioButtonId();

// 後は、その1と同じ

参考文献

http://tkm0on.hatenablog.com/entry/2015/06/03/115743
http://www.sakc.jp/blog/archives/24201

【2】スピナー(プルダウン) / Spinner

 デザイン部に関して

[1] [Container]-[Spinner] でスピナーを追加する
[2] res/values を右クリックして、[New]-[Values Resource File]を選択し「OK」押下
 + File name : 任意のファイル名(今回は、「components.xml」)
[3] ファイルを修正する(以下の「res/values/components.xml」を参照)
[4] [1] で追加したSpinnerの「entries」を選択し、[3]で追加したリストを選択
 (今回は、「@array/max_words_list」)

res/values/components.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="max_words_list">
        <item>5</item>
        <item>10</item>
        <item>15</item>
        <item>20</item>
        <item>50</item>
        <item>100</item>
    </string-array>
</resources>

構文

値設定

// 設定
var index = 0
spinner.setSelection(index)

イベント処理

spinner.onItemSelectedListener =
   object : AdapterView.OnItemSelectedListener{

   // 選択時
   override fun onItemSelected(
     parent: AdapterView<*>?,
     view: View?,
     position: Int,
     id: Long
   ) {
     val targetSpinner =  parent as Spinner
     // 
   }

   // 既に選択された項目を選択した場合
   override fun onNothingSelected(parent: AdapterView<*>?) {
     // Do nothing
   }
}

サンプル

* 以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2013/10/02/005640

参考文献

https://developer.android.com/guide/topics/ui/controls/spinner?hl=ja

【3】トグルスイッチ / Switch

* On/Off (true/false) を切り替える

構文

値取得/設定

switch.isChecked = true/false

イベント処理

switch.setOnCheckedChangeListener {
       _, isChecked ->
    // isChecked で On/Off を切り替える
}

参考文献

https://qiita.com/kiyo1219/items/a6517e437c2ca6dda634

■ 関連記事

レイアウト ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2015/08/23/165632
画面コンポーネント / EditText RatingBar etc ~ 入力 ~
https://dk521123.hatenablog.com/entry/2020/08/20/000000
設定ファイルの保存 ~ SharedPreferences ~
https://dk521123.hatenablog.com/entry/2013/10/02/005640
Kotlin ~ 基本編 / Enum・列挙型関連 ~
https://dk521123.hatenablog.com/entry/2020/08/10/125112