しかし、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 件のコメント:
コメントを投稿