2016/05/27

[android]2つspinnerを使ってみる (1)

技術紹介じゃなくて、よくわかんないなりにやってみた、というコーナーだ。
「こいつ、こんなことも知らないのー」という目線で見ていただけるとありがたい。

 

やりたいのは、Windowsの部品名で言えば、コンボボックスを2つつくって、1つ目に大項目を、2つめに小項目を選べるようにして、ボタンを押したら大項目と小項目の組み合わせに応じたメソッドを呼び出す、というもの。

Androidでは「コンボボックス」じゃなくて「スピナー」spinnerと呼ぶのですな。
スピンするイメージがないのだが、まあいいや。

 

スピナーを作って、リスナーを設定すると、選択されたときにonItemSelected()が呼ばれる。
引数にidがついているから、それで選択されたアイテムの番号がわかるようになっている。

なので、大項目のonItemSelected()のときに、小項目用のスピナーを設定すればよいはず。

 

動的にスピナーの項目を作るときは、ArrayAdapterにadd()していって、最後にスピナーにsetAdapter()すればよい、ということになっている。
実際にそれで設定できたのだが、妙にアイテム間が狭い。。。

image

小項目のArrayAdapterとSpinnerは、大項目のonItemSelected()ではcontextが合わないようなので(たぶん)、privateメンバにしてonCreate()のときに設定させている。
だからかなぁ。

 

こう、こまごま言葉で説明せずにソースを置きたいのだけど、今使っているブログエディタ(Open Live Writer)にはまだソースを載せるのに適したプラグインが出てないのだ。
GitHubに置こう。
https://github.com/hirokuma/AndroidTwoSpinners/blob/master/app/src/main/java/com/blogpost/hiro99ma/twospinners/MainActivity.java

みんなのまねして、android.R.layout.simple_spinner_itemを使っているけど、これが狭いということなのかな。

Y.A.M の 雑記帳: Android Spinnerの選択肢をXMLで指定する
ああ、スピナーの部分とドロップダウンのところで違うレイアウトになっているということか。
今回は、コンボボックスみたいなやつだから、ドロップダウンなのだろう。

image

よーし。

 

なんか、こうですね、XMLでやるところと実装でやるところがよくわかってないし、設定値の関係性もわかってないのですよ。
やっていれば、いつか見えてくるようになるのだろうか。。。

0 件のコメント:

コメントを投稿

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