しかし、SpinnerではgetItemViewType()とgetViewTypeCount()が呼ばれなく、行ごとに違うViewにするにはListViewとは異なる方法を取る必要がある。
Spinnerのprivateな内部クラスであるDropDownAdapterがAdapterをラップしているのだが、このラッパーは以下のように固定値を返すように実装されていて、setAdapter()でセットしたAdapterのgetItemViewType()とgetViewTypeCount()を呼んでくれない。
public int getItemViewType(int position) { return 0; } public int getViewTypeCount() { return 1; }Spinnerで行ごとに違うViewを使うには、以下のようにすると良い。
- Viewの中に複数のViewを含めておいて、見せたいViewのVisibilityだけvisibleにし、その他をgoneにする。
- getView()でconvertViewを再利用するのをやめて、毎回Viewをinflateする。もしくは、convertViewで渡されるViewのタイプを見て、再利用するかどうかを自分で決める。
0 件のコメント:
コメントを投稿