重ContentProvider查询和ListView

时间:2015-07-31 11:03:01

标签: android android-listview android-contentprovider

对于一个可能的noob问题很抱歉,但是尽管在SO上学习了很多教程和其他问题,但是找不到答案。

我想要做的很简单:显示包含大量数据库存储字符串的Android ListView 。而且“很多”我的意思是高达100MB,但ListView应该立即开始显示。

上下文是:这是笔记管理应用程序,默认情况下,它应显示未过滤的所有用户笔记。我正在研究如果有很多笔记,应用程序的行为方式。

现在我使用Loader框架推荐的方法:在onCreateLoader中启动ContentProvider查询,并将结果Cursor分配给onLoadFinished中的ListView适配器。

这仍然很慢(初始负载高达10秒)。我已经研究了Cursor的来源并知道它保留了数据的“窗口”,因此不是所有100MB的文本都应该一次加载。但似乎情况确实如此。

我认为这是一项相当普遍的任务,我很惊讶没有找到任何有关它的好信息。这是应用程序的关键部分,我想从一开始就把它弄好 - 以后很难重构它。

所以有人可以帮忙吗?懒得加载答案吗?为什么Cursor不能自己做呢?如何正确地做 - 我是否必须首先缓存一个ID数组并在滚动时加载块?

谢谢!

1 个答案:

答案 0 :(得分:2)

SimpleCursorAdapter + CursorLoader应该可以正常运行,看起来您的数据库查询速度很慢,很可能您希望对未编入索引的字段中的数据进行排序