2010年8月26日木曜日

Android 「The world of ListView」 - Item properties -

Google I/O の 「The world of ListView」というセッションを見たので
そのまとめ。

長いので、項目ごとに分けました。
今回は 「Item properties」

--------------------------------------

Google I/O の「The world of ListView」のページは こちら

セッションのスライドはこちら

 agenda

  • Virtualization and adapters

  • Item properties

  • Headers and footers

  • List selectors

  • Other features

  • Gotchas and don'ts


--------------------------------------

Item properties

 * Enabled or disabled

   • Enabled
     – 選択、クリックができる要素
   • Disabled
     – コンテンツ内の区切り線・ヘッダ

   • 例)マーケットアプリ
     緑が Disabled Items



 * Choice mode
   • Single choice mode (radio buttons)
   • Multiple choice mode (checked items)
   • 選択されているのはどれ?
     – Single choice mode
       • getCheckedItemPosition()
     – Multiple choice mode
       • getCheckedItemPositions()
     – Stable IDs はポジションが変化するような場合に役立つ
       • getCheckedItemIds()
       • Stable ID は項目の挿入や削除によって変化しない
       (ポジションは変わる)
       • an integer

   • 例)左:Single choice mode, 右:Multiple choice mode





 * Focusable
   • setItemsCanFocus(boolean itemsCanFocus)
   • itemsCanFocus = false : リストの要素全体はフォーカスできる
   • itemsCanFocus = true : リストの要素内の view にフォーカスできる

   # 「UIで大きな制限の1つが、トラックボールとタッチスクリーン両方を
   # サポートしなければならないということ。
   # タッチしたら、フォーカスや選択はすぐ消えるように、早い段階に決めた。
   # なぜなら、choice mode があるから。
   # ユーザーがリスト内の項目をタップして、かつ画面上の選択を
   # 維持させることはできない。
   # ListViewは本当に難しいこと発生させないようにコントロールしている。

   # 例えば、1つの行に複数のボタンが含まれているけれども、
   # トラックボールを使った場合、行全体が選択される。
   # その理由は、行全体を選択している状態から、その中の小さい要素を
   # 選択するというトラックボールナビゲーションを持つことは、
   # とてもやっかいだから。」

   もし、行の中の小要素(ボタンとか、リンク)にフォーカスさせないなら
   itemCnaFocus = true にする。

   • 例)右:itemsCanFocus = false, 左 : itemsCanFocus = true



 # Item の view が複雑になると、この Focusable をどっちにするかは
 # 悩ましいところ。登壇者も、いいアイディアがあればコミュニティに
 # フィードバックしてほしいと言ってました。
 # 将来的に改善したいとも言ってたので、期待したいです。

0 件のコメント:

コメントを投稿