0

大きなデータセットのデータを表示する ListView があります。データは Web から取得さList<Data>れ、バックグラウンド タスクによって (メモリ内に) 配置されます。(ポーリングの更新を含む電子メールの受信トレイを考えてください。)

私の問題は、そのデータを ListFragment/ListView/ListAdapter に渡して表示する方法です。

このリストは永続的ではありません (したがって、コンテンツ プロバイダーではありません) が、アクティビティよりも長く存続します (アクティビティがまだ有効でない場合、バックグラウンドで更新されます)。

唯一のオプションは次のようです。

  1. インテント/バンドルを介して渡します。これには、特にリストがバックグラウンドで更新されるたびに新しいリストを設定する必要があるため、リスト全体が再シリアル化されることを意味するため、いくつかのレベルでシリアル化が必要になります。
  2. プログラムのどこからでもリストを提供する Singleton を作成し、ListAdaptor から SingletonListProvider.getInstance().getList() にアクセスします。私はシングルトンが好きではなく、並行性が心配です。
  3. ContentProvider を使用します。現在メモリに存在する単純な List<> にはやり過ぎのようです

他のオプションはありますか?

Activity (この場合は ListFragment) の作成方法をほとんど制御できないように思われるため、List をコンストラクターのパラメーターとして渡すことはできません。

4

1 に答える 1

0

特にデータ構造が大きい場合は、データベースを使用するのが最善の方法です。ちなみに、ContentProviderを拡張するのに十分なものを作成するべきではありませんSQLiteOpenHelper

http://www.vogella.com/articles/AndroidSQLite/article.html#sqliteoverview_sqliteopenhelper

于 2012-10-30T15:07:09.977 に答える