2010年02月28日

[Android] ListViewのEmptyView

前から使い方がイマイチよくわかっていなかったものがありました。
ListViewのEmptyViewです。
リストの中身が空だった場合に表示してくれる代わりのViewなハズなんですが、結構前に本のサンプル通り書いたつもりが表示されなかったりして、よくわからないままになってました。

サンプルに載っていたのは、xmlでListViewを書くときに、idにandroid:list(でしたっけ?)を指定して、別のViewのidにandroid:emptyを指定するというものだったと思います。
ちゃんと書いたつもりだったのですが、リストが0件のときも何も表示されませんでした。

最近、setEmptyView()というメソッドがあることを知ったので、もう一度チャレンジしてみました。
引数がViewだったので、LayoutInflaterでxmlから生成したViewを設定してみたのですが、これもうまくいかず…。
次にxmlのListViewと同じレベルに別のViewを書いてみて、findViewById()で取得したViewを設定してみました。
なんと、こちらはちゃんと動きました。

ちゃんと調べたわけではないですが、EmptyViewというのはListViewと切り替えて表示されるViewのような気がします。
動き的にはそれぞれのsetVisibility()で切り替えられているだけ、のような印象を受けました。
なので、同じレイアウトの中に入っていないと切り替えられても表示されないということだったのではないかと。
LayoutInflaterで生成したViewが表示されないのも、これなら納得できます。
昔、サンプルコードがうまく動かなかったのは、もしかしたらListActivityを使わなきゃいけなかったのかな、と今更思ってみたり。


今回はサンプルはありません。
近いうちにまたListViewのことを取り上げる予定なので、その時のサンプルにEmptyViewのことも入れられれば入れてみたいと思います。
posted by t2low at 01:29| Android