1

今日、私はAndroidフレームワークがどのように機能するかを考えていましたが、1つのこと、つまり開発者(私)がいくつかのソースからのカスタムデータを表示するためにリストをプログラムする方法についてはわかりません。私はいくつかのアプリを作成しましたが、アプリケーションをできるだけクリーンで高速に保つことが重要です。

つまり、ニュースリーダーなどのアプリがあります。Fragments、ListFragments、リストアイテムのカスタムレイアウト、および多くのリストとアクティビティのデータを表示するためのBaseAdapterを使用しています。ここでは何も新しいことはなく、特別なこともありません。最初はアプリでウェブサーバーからsqliteにすべてのデータをダウンロードするので、速度と安定性について確信しています。そして、次は何ですか?

Javaリスト(リストアイテム)からリストアイテムを作成してからbaseadapterに渡す必要がありますか、それともSQLiteカーソル->リストアイテムの方法のみを使用する必要がありますか?リストを更新し、新しいアイテムを追加して削除する方がよいでしょうか。別のクラスにbaseadapterを含むListFragmentがあることを忘れないでください。

よくわからないので、新しいアイテムを更新してリストにロードする方法がわかりません。多くのサードパーティライブラリを使用せずに、アプリをクリーンに保ちたいだけです(したがって、EndlessListなどは気にしません)。

tl; dr

データを表示するためにいくつかのソースを使用する場合、速度を上げるためにリストを作成するにはどうすればよいですか?

4

1 に答える 1

1

あなたの質問を完全に理解しているかどうかはわかりませんが、アダプターに使用するデータソースの部分については、次のように考えています。

扱うデータ量にもよると思います。十分に小さい場合は、リスト内のすべてをメモリに保持できますが、データが時間の経過とともに大きくならないようにする必要もあります。

残念ながら、Cursor をデータ ソースとして使用することも、「メモリ不足」の例外問題を回避するための安全なオプションではありません。結果セット全体を明らかにメモリにロードするカーソルの実装のため、クエリごとに制限があります。

したがって、大量のデータまたは時間の経過とともに大きくなる可能性のあるデータ (メッセージ、ユーザー作成アイテムなど) を処理している場合は、一定量のアイテムをメモリにロードするデータ ウィンドウと内部的に連携するアダプターが必要です。時間。そのウィンドウは常に、ListView を使用して (上下にスクロールすることにより) 現在表示してすばやくアクセスできる一連の項目をメモリ内に保持します。

たとえば、ウィンドウに 200 個のアイテムが保持されているとします。そのウィンドウの上限/下限に達すると、アダプターは次の隣接するウィンドウをロードする必要があります。この種の動作は、GMail アプリで確認できます (「会話を読み込んでいます....」)。

リストのようにカーソルを使用できるため、そのデータを最初にリストに転送せずにカーソル内に配置します。

于 2012-07-16T23:17:39.487 に答える