Spinnerのカスタマイズについて

992 views
Skip to first unread message

あきら

unread,
Oct 26, 2010, 11:48:44 PM10/26/10
to 日本Androidの会
あきらと申します。

自作のAdapterを利用したSpinnerの作成をしているのですが、
Spinnerの表示は自作したAdapterを利用して表示することができました。
ただ、Spinnerをクリックして表示される一覧の表示に対してsetDropDownViewResourceで指定した自作のレイアウト表示がう
まくできません。

ArrayList<ItemModel> models = new ArrayList<ItemModel>();
models.add( new ItemModel("itemC1","value1") );
models.add( new ItemModel("itemC2","value2") );
models.add( new ItemModel("itemC3","value3") );
ItemAdapter adapter = new ItemAdapter(this, R.layout.sample01_item,
models);
adapter.setDropDownViewResource( R.layout.sample01_item );

Spinner spinner02 = (Spinner) findViewById(R.id.Spinner02);
spinner02.setAdapter(adapter);

上記で一覧を表示すると、オブジェクトのアドレス値(?)みたいなものが表示されてしまいます。
実現方法など教えていただければと思います。
よろしくお願いいたします。

あんざいゆき

unread,
Oct 27, 2010, 12:36:28 AM10/27/10
to android-g...@googlegroups.com

あんざいです。

   ItemAdapter って自作クラスですよね?
   そのコードみせてもらわないとなんとも言えないです。
   せめて Extends してるクラスとか教えてください。 BaseAdapter かな?

2010/10/27 13:20 "あきら" <i.hobbit.jp@gmail.com>:

あんざいゆき

unread,
Oct 27, 2010, 1:09:32 AM10/27/10
to android-g...@googlegroups.com
あんざいです。

 ちょっと調べたんですけど、
 たぶん setDropDownViewResource に指定するレイアウト xml は root view が
 TextView か CheckedText 1つでないとだめだと思います。

 で setDropDownViewResource に指定しているレイアウトは 
 で見れますが、 CheckedTextView が rootview になっています。

 たとえば、 LinearLayout のなかに TextView が2つなどのレイアウトを使いたい場合は
 自作 Adapter で getDropDownView を Override して適切な View を返すようにする必要があります。
  ちょうど ArrayAdapter を継承して ListView の1行をカスタマイズするときに getView を
 Override するのと同じことです。

 setDropDownView で指定したい レイアウトの xml があればサンプルだせますよ。



2010年10月27日12:48 あきら <i.hobbit.jp@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。




--
あんざい ゆき
anzai...@gmail.com
twitter : @yanzm

あきら

unread,
Oct 27, 2010, 9:16:32 PM10/27/10
to 日本Androidの会
あきらです。

あんざいさん、
こちらから提供する情報が少ないなか
調査していただきありがとうございます。

教えていただいたgetDropDownView()をOverrideし、
戻り値にViewオブジェクトを返すことで表示することができました。
ありがとうございまいた。

使用するレイアウトはLinearLayout の中にTextViewを2つ持っています。
ItemAdapterクラスは自作クラスで、
getView()をOverrideしてSpinner本体の表示をカスタマイズ、
getDropDownView()をOverrideして一覧の表示をカスタマイズすることで、
希望するUIを作り込むことができました。
Reply all
Reply to author
Forward
0 new messages