« 家庭の常備薬『オロナインH軟膏』! | トップページ | えびせんべいの『縁(ゆかり)』を食ってみた。 »

2011年11月11日 (金)

セレクトボックスだけ使いたいのだが何か?

アンドロイドのセレクトボックスってボタンにリンクしている。

これは、これで便利なのだが、メニューからセレクトボックスを
表示して使いたい時には、逆に邪魔になる。

単品でセレクトボックスを使いたい!

で、方法が無いのかと思いきや、
「spinner = new Spinner(this);」って記述が可能なので
多分単品で呼び出すことができるはず!

と推測。

で、調べて回ると…

「performClick」を見つけた。

セレクトボックスは、表示されているボタンも含めた一連の処理らしい。

だが、ボタンが邪魔なので表示しないように作成すると
ボタンをクリックするすることができない。
その状態でクリックを処理するために「performClick 」があるようだ。

表示されていなくても内部でボタン処理は、厳然とあるらしい。

実際、どのような制作過程かは、分からないが一つの完成した処理を
分割するより、同等の信号を与える方が簡単に実現できる場合がある。

どうも、制作したプログラマーは、そうしたらしい…。

そんな事を考えると面白い。

こんな感じで作ってみる。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.add("1");
adapter.add("2");
...
spinner = new Spinner(this);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
spinner.performClick();

で、リストボックスが表示される。

めでたしめでたし…。

などと思ったのが甘かった!

何やっても「onItemSelected」が呼ばれない!!!

つまり結果を得られない!

何が悪いのか?

色々試してみたが…

結論として「View」も含めたシステムと言う事らしい。

つまりレイアウトを登録しないと駄目って事。

じゃあ、こんな感じに登録しておいて非表示にすれば良いのか?

setContentView(R.layout.main);
View layoutSpinner = View.inflate(this, R.layout.spinner, null);
addContentView(layoutSpinner, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
layoutSpinner.setVisibility(View.INVISIBLE);// ※リストボックスのあるレイアウトを非表示

とやってみたらできた。

レイアウトが非表示だと、その中にあるものも
ディセーブルされるかと思ったが、そんな事は無いようだ。

「spinner = new Spinner(this);」は、幻だったのね…。(T_T)

すっきりしない、裏から手を回すようなやり方だけど…

目的は、達せられるので良しとする!

誰か、良いやり方があったら教えてください…。(T_T)

参考まで…「020.zip」をダウンロード

|

« 家庭の常備薬『オロナインH軟膏』! | トップページ | えびせんべいの『縁(ゆかり)』を食ってみた。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/108365/53221203

この記事へのトラックバック一覧です: セレクトボックスだけ使いたいのだが何か?:

« 家庭の常備薬『オロナインH軟膏』! | トップページ | えびせんべいの『縁(ゆかり)』を食ってみた。 »