2010-11-19 7 views
0

セクション見出しのある項目のリストを表示するカスタムアダプターがあります。私はこれを達成する方法の例としてJeff SharkeyのSeparatedListAdapterとCommonsWareのMergeAdapterを見てきましたが、今は各セクションの内容に別々のアダプタを用意することで動作する解決法があります。セクション見出しのあるAndroidアダプター:パフォーマンスの問題

これは大きなパフォーマンス上の問題を引き起こします。私の場合、リストには数千ものアイテムがあり、それぞれに日付が関連付けられています。その日付のすべてのアイテムのセクション見出しとして日付を使用したいと思います。

したがって、セクション見出しがないと、日付でソートされた項目を返す単一のCursorがあります。ニースと簡単。セクションの見出しで

、私は現在、これをやっている:

  1. 一つのカーソルそれぞれ異なった日付、ということに一致する項目を返すために別のカーソルのデータセット
  2. 内のすべての明確な日付を選択します日付
  3. 日付(セクション見出し)を入力し、各アイテムのSimpleCursorAdaptersをカスタムアダプターに分けます。

これは、必要以上に多くのデータベースクエリとカーソルを生成する必要があり、ListViewが表示されるまでに数秒の遅延があります。

getViewは巧妙なことを行い、連続した項目の間で日付が変更されたときにそれを検出し、新しい見出しに潜んでいるので、カーソルが1つだけ必要な簡単な解決策があると思われます。誰もこれを行う方法を提案することはできますか?

答えて

2

最も簡単な方法は、すべてのgetViewコール内で、前のアイテムの日付が異なるかどうかをチェックし、そうであれば現在のビュー内にヘッダーを単純に埋め込むことです。

+0

はい、私はあなたが正しいと思います。 –

1

http://code.google.com/p/android-section-list/を試すことができます。これは、単一のカーソルの後ろに1つのオブジェクトのカーソル+セクションを戻すだけです。しかし、それは結果として得られるリスト+ヘッダのサイズを計算するために(リストアダプタによって必要とされる)すべての要素を(一度)通過しなければならないので、まだ遅いかもしれません。

関連する問題