diadia

興味があることをやってみる。自分のメモを残しておきます。

Kotlin android ラジオボタンタイプのDialogを実装する

ダイアログの基本的な実装の仕方

Android Kotlin ダイアログを実装する

実装内容

例えばユーザーがログインする際にアカウントを一覧させる。ユーザーはそこからあるアカウントを選び、ログインを実行する。 この場面をダイアログを使って実装する。DialogFragmentの継承でどの様に設計がテーマとなる。

ラジオボタンの実装方法

リストを追加する

ボタンの種類は以下の通りになる。

これらのボタンはAlertDialogに備え付けられる前提があるようだ。 排他的選択リストを作成するには、setItems() メソッドを使う。複数選択アイテム(チェックボックス)のリストを実装するには、setMultiChoiceItems() メソッドを使う。排他的選択アイテム(ラジオボタン)のリストを実装するには、setSingleChoiceItems() メソッドを使う。

今回は、ラジオボタンのリストを生成するのでsetSingleChoiceItems() メソッドを使うことになる。

setSingleChoiceItemsメソッド

class SelectUserDialogFragment:DialogFragment(){
  override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {

    val context = SingletonContext.applicationContext()

    val am: AccountManager = AccountManager.get(context)
    val accounts = am.getAccountsByType("com.example.my_test_account_type")
    var accountsList:Array<String> = arrayOf()
    for (account in accounts){
        accountsList += account.name
        println(account.name)
    }
        
    var selectItem:Int? = null
    val builder = AlertDialog.Builder(activity)
    //タイトルの設定
    builder.setTitle("ログインするユーザーを選んでください")

    //ラジオボタンを設置する
    builder.setSingleChoiceItems(
        accountsList,-1,{ dialog, which ->
            selectItem = which
         })

    //ログインボタンの設定
    builder.setPositiveButton("Log in this user", { dialog, which ->  
        print("セレクトアイテムを表示")
        println(selectItem)
      })

        val dialog = builder.create()
        return dialog

    }
}

参考

【Android】パパっと使えるAlertDialog一覧