2010年9月1日水曜日

Android 「The world of ListView」 - Gotchas and don’ts -

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 件のコメント:

コメントを投稿