Android ArrayAdapter に ラジオボタンを置く
Android だと、リストビューから一件選択するのに、ラジオボタンが表示されることがよくある。
確かに、上記のようなダイアログを作ってて、対象が1件だけだと、ぱっと見メッセージと区別がつかないのでどうしていいか分からないが、ラジオボタンがあると「選択してね」感がかもしだされる。
ラジオボタンを使ってみる
で、ラジオボタンを配置しようと、単純にラジオボタンを含むレイアウト(R.id.rdo_select_item)を作成して動かしてみると・・・
ArrayAdapter<String> adapter = new ArrayAdapter(context, R.layout.row_items, R.id.rdo_select_item, items);
きちんと画面には表示されるが、リストビューの setOnItemClickListener に 登録したリスナーでリストの選択がどうもハンドリング出来ない。
android.R.layout.simple_spinner_dropdown_item を使ってみる
と、まぁ表示はされるのだが、文字色が黒だったり、どうもしっくりこない。
あと、選択したらきちんと動くのだが、ラジオボタンはフェイクのようで、選択状態の見た目にはならない。
ArrayAdapteradapter = new ArrayAdapter (context, android.R.layout.simple_spinner_dropdown_item, items);
TextView の代わりに CheckTextView を使いつつ、listChoiceIndicatorSingle を指定してみる
ArrayAdapter の使い方は、通常のTextView を単純に使用するのと同じにしておいて、
ArrayAdapteradapter = new ArrayAdapter (context, R.layout.row_items, R.id.txt_select_item, items);
レイアウトの方で、TextView の代わりに、CheckedTextView を使う。
そして、checkMark 属性に、android.R.attr.listChoiceIndicatorSingle を指定する。
<?xml version="1.0" encoding="utf-8"?> <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/txt_select_item" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textSize="20sp" android:checkMark="?android:attr/listChoiceIndicatorSingle"> </CheckedTextView>
これで、見た目的には、希望通りになった。
ただ、android.R.layout.simple_spinner_dropdown_item 同様、ラジオボタンはフェイクだけど・・・ まぁいいや。
これに限らず、android.R には、こねたがいっぱいつまってそうなので、いずれ詳しくみてみたい。
また一歩野望に近づいた。