Android に単純な無限スクロール GridView を実装しました。次のコンポーネントがあります。
- GridView が一番下までスクロールされるたびに、AsyncTask を開始してより多くの項目をアダプターにロードします。
- AsyncTask からフェッチされた項目を追加し、notifyDataChanged() を起動して GridView がそれ自体を更新できるようにするアダプター。
これは、アダプターが無期限に成長している場合を除いて、正常に機能しているようです...ユーザーが最後までスクロールするたびに、このアダプターにアイテムを追加し続けることを意味します。これはメモリの問題のようです。
無限アダプターを実装する適切な方法は何ですか? 私のためにそれを行うサードパーティのjarファイルではなく、コンセプトを探しています。
ありがとう
解
マークされた答えには正しい理論があります。私の実装では、ロードされたデータを sqllite データベースにバックアップするため、全体の流れは次のとおりです。スレッドでインターネットからデータをダウンロードし、データを解析してスレッドでデータベースに保存し、UI スレッドで notifyDataChanged を起動します。
アダプタの getCount() メソッドは、データベースから count(id) を選択するだけで、オブジェクトのバッチを一度にデータベースからメモリに取得して、アダプタが使用できるようにします。