2016/06/08

[android]ダイアログ上のラジオボタンの何番目が選択されているのか?

BLE接続しようとしたのだが、もう1つ手前があった。
今回はラジオボタンで選択したあと、接続ボタンを押してBLE接続させようとしている。
ダイアログ上のラジオボタンの何番目が選択されているのかを知らねばならぬのだ。


これが前回までのソース。
PeripheralSelectDialogFragment.java
選択されている情報を取得したいのは56行目

 

ラジオボタンを選択するためにタップしたときは、OnItemClick()を通るのだろう。
そこの引数にpositionがあるから、それを保持するようにしておく、ということもできるだろう。

でも、そこの中を見る限りではListViewっぽいので、ListViewをfindViewById()で取ってきてgetCheckedItemPosition()を使う、ということもできそうな気がする。

この2つしか思いつかなかったので、やってみよう。


タップした位置を覚えておく場合は、onItemClick()からmOnCheckboxClickListener.onClick()が呼ばれるようだ。

ああ、これがAlertDialogにsetOnItemSelectedListener()したら呼ばれるやつか。
・・・呼ばれんやん。
呼ばれているのはsetSingleChoiceItems()でoverrideしたonClick()だけだ。
ソースは、前のdismiss()する手前のところだ。
つまり、第2引数がpositionだ。

int型のprivate変数でも用意して、onClick()の第2引数を覚えるようにしておき、setPositiveButton()のonClick()で使うようにすればいけるだろう。

 

次は、ListViewそのものを取ってくる方法か。
dismiss()とかで見ているAlertParamsクラスもListViewを使っているけど、dialog.mListLayoutなんか使って取得しているから私のところでは無理な気がするのよねぇ。

あ、AlertDialogにgetListView()なんてものがある。
onClick()の引数はDialogInterfaceだから、

ListView lv = ((AlertDialog)dialog).getListView();

でListViewが取ってこれるようだ。
lv.getCheckedItemPosition()とすると、positionと同じものが取れているように見える。
「見える」としているのは、確信が持てないからだ。
BLE端末が2つしか無いのだけど、今のところはこれでうまくいっている。


今回までのコミットはこちら。
PeripheralSelectDialogFragment.java

次こそ、次こそはBLE接続を。。。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。