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