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 では置き換えられない?
0 件のコメント:
コメントを投稿