0

我有一个 ListView 显示来自大型数据集的数据。List<Data>数据由后台任务从网络检索并放入(即在内存中)。(想想带有投票更新的电子邮件收件箱。)

我的问题是如何将该数据传递给 ListFragment/ListView/ListAdapter 进行显示。

此列表不是永久的(因此不在内容提供程序中),但比活动的寿命更长(当活动尚未激活时,它会在后台更新)。

唯一的选择似乎是:

  1. 通过 Intent/Bundle 传递它。这需要在某种程度上进行序列化,这对于我的长列表来说非常昂贵,尤其是每次在后台更新列表时,我都必须设置一个新列表,这意味着整个列表都会重新序列化。
  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 回答