0

大量のデータを含むリストがあるため、下にスワイプするたびに 10 個のアイテムをロードするリストに遅延読み込みを実装しました。しかし、シナリオに行き詰まっています。つまり、一度に10個のアイテムをロードしていますが、ユーザーがsearchviewを使用して検索したい場合は、データベース全体を検索し、この結果で同じリストを準備する必要があり、searchviewがクリアされたときに以前にロードされたリストをロードします。誰でもこれを解決するのを手伝ってくれますか? セキュリティ上の理由から、コードを投稿していません。これを解決する方法を提案してください。

ありがとう

4

2 に答える 2

1

Recyclerview の使用を検討してください。膨大な数のアイテムがある場合でも、デバイスのパフォーマンスが向上します。

cardview と組み合わせて、すべてのアイテム (1000 アイテムとしましょう) を recyclerview に配置できます。そのため、スワイプとロードの機能について気にする必要はありません。すべてのアイテムは、recyclerview アダプターのビューモデルに保存されます。アダプタ内で検索を実行し、フィルタリングされた結果を表示できます (リスト内のデータがそれほど大きくないと仮定します)。

https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html

于 2015-10-15T09:30:23.403 に答える
1

リスト ビュー項目に使用している配列リストをさらに 2 つ作成します。

originalArrayList 、 searchArrayList 、 tempArrayList を許可する

ステップ1)originalArrayListに10個のアイテムをロードし、tempArrayListのすべてのアイテムをコピーしてから、originalArrayListでリストビューに通知します。

ステップ 2) searchEdittext のテキスト変更リスナーを追加する

ステップ3)searchEdittextのサイズが1より大きい場合は、searchEdittextのOntextChangedメソッドをチェックインし、データベースを検索して要素を2番目のarraylistに入れます。searchArrayList をクリアし、originalArrayList をクリアした後、searchArrayList のすべての項目を originalArrayList 通知アダプターに追加します。

ステップ 4) OntextChanged メソッドで searchEdittext サイズが 0 の場合、originalArrayList をクリアし、tempArrayList のすべての項目を originalArrayList 通知アダプタに追加します。

これでうまくいくことを願っています。

于 2015-10-15T11:12:36.880 に答える