Google I/O の 「The world of ListView」というセッションを見たので
そのまとめ。
長いので、項目ごとに分けました。
今回は
「Gotchas and don'ts」--------------------------------------
Google I/O の「The world of ListView」のページは
こちらセッションのスライドは
こちら agenda
•
Virtualization and adapters •
Item properties •
Headers and footers •
List selectors •
Other features •
Gotchas and don'ts--------------------------------------
■ Gotchas and don'ts (落とし穴とやっちゃいけないこと)
# gotchas って単語しらなかった。「落とし穴」なんだね。
*
Gotcha(落とし穴) ・
リストが真っ黒になった?! • 最適化に便利なので...
– スクロール中の view が bitmap でキャッシュされてるとき
– ブレンディングを避けるために不透明の bitmap を使っている
• 解決方法
– android:cacheColorHint="#00000000"
– android:cacheColorHint
="@color/myBackgroundColor"
・
スクロールバーのサイズが変わった?! • view がすごく異なる高さを持つときにおこる
• Smooth scrollbar は各要素(item)の高さが必要
– Too expensive(コストかかりすぎ!)
• 解決方法
– android:smoothScrollbar=”false”
*
Don't (やっちゃいけないこと) ・
android:layout_height=”wrap_content” • ListView は仮想化されている
• wrap_content = 子要素の最大
– ListViewは均等サイズの子要素に対応
– 数千個の子要素を測る?
• Android framework cheats
– 3個の子要素だけ測る
– それでもコストかかりすぎ
•間違った結果になる
・
ScrollView の中に ListView を入れる • ScrollView がスクロールする
• ListView がスクロールする
• どれがスクロールする?
・
adapter に view をキャッシュする • ListView の裏をかこうとしない
– ListView は view の所有権とコントロールを前提としている
• 複雑な再利用メカニズム
– 多数の最適化
– 我々も時にはそこにバグを残してしまう
• 最悪の場合はアンデッド
– 再利用者と画面の両方に view
・
必要でないときに ListView を使う • ListView は...
– 再帰的な、境界のないデータ用
– (たくさんの)複雑さが加わる
• LinearLayout や ScrollView では置き換えられない?