web-dev-qa-db-ja.com

Androidアルファベット順のリスト

多くのアイテムのリストがあるとします。各項目は、ユーザーが選択できる1行のテキストです。リストには平均で約750のアイテムが含まれます(ただし、1,000に達する場合もあります)。

このリストを1つの巨大なリストビューで表示する代わりに、ユーザーにアルファベット順でナビゲートできるようにして、[〜#〜] a [〜#〜]で始まるアイテムのみが表示されるようにします。次に、ユーザーは[〜#〜] b [〜#〜][〜#〜] c [〜#〜]などに移動できます。

(A/Zを含む)リストビューの上にSpinnerを置くことを検討しました。リストビューのコンテンツは、スピナーの現在の選択に基づいてフィルタリングされます。ただし、これはユーザーにとって非常に煩わしいことに気づきました(スピナーでのアルファベットの変更ごとに、少なくとも2回のタップと、特定の文字を下にスワイプする必要があります)。

では、ユーザーフレンドリーでありながら同じ機能を実現するためのより良い方法は何でしょうか?

4
yydl

アルファベット順に並べられた大きなリストの最も一般的なパターンは、単一のリストに次のものを提供することです。

  • セクションの見出し(「A」、「B」、「C」など)。スクロール中にオプションで上部に固定されます。
  • 高速スクロール用の自動非表示の厚い「スクロールつまみ」。
  • たとえば、リストの上または近くに検索ボックスを提供することによって、またはコンテキストの「検索」アクションメニュー項目またはボタンを提供することによって、リストをフィルタリングするためのメカニズム。

この実装の最良の例は、標準の「連絡先」アプリケーションです。以下は、簡単なスクリーンショットです。

連絡先アプリケーションhttp://dandroidtabletpc.com/wp-content/uploads/2011/08/Android-Contact.png

太いスクロールつまみのスクリーンショットは次のとおりです。

Thick scroll thumb

これが唯一の可能な解決策ではないが、これは最も簡単で簡潔な解決策の1つであることに注意してください。


開発者メモ

  • 厚いスクロールつまみについては、 Android:fastScrollEnabled を参照してください。
  • アルファベット順にカーソルを区切る方法については、 AlphabetIndexer を参照してください。
  • セクションヘッダーの記述方法の例については、cwac-mergeの-​​ CommonsWare Android Componenets を参照してください。
  • リストがスムーズにスクロールするようにするには、ビューのリサイクルを活用し、UIスレッドで重い操作を行わないようにしてください。
5
Roman Nurik

さまざまな パターンを使用して、膨大な量のコンテンツを表示します Androidで頻繁に使用されます。

オプションをグループ化(AZ文字の最初のリストを表示)、リストの上に水平にスクロールするタブの行を配置、検索バーを提供して結果をフィルターに掛けることができます。しかし、1つの効果的なメカニズムは、すべてのアイテムと を表示することです。スクロールサム を提供して、検索を簡素化します。

4
Pau Giner

AutoCompleteTextViewは、非常にユーザーフレンドリーでありながら、最小限の画面領域で大量のデータを選択できるようにする優れたソリューションです。

私はこれを数百のリストに基づく国選択のためにうまく配線しました。 AutoCompleteTextView.Validatorのカスタム実装を使用すると、有効なレコードのみが選択されていることを確認し、基本的にはそれをフィルタリング/検索できる巨大なスピナーのように扱うことができます。

0
Manfred Moser