在ListActivity中加载一个大的sqlitedatase



我正在做一个Android项目,我需要尽快完成。

该应用程序的一个功能是加载一个SQLite数据库内容,并在ListActivity中的ListView中列出它。

数据库包含几个表,其中2个表非常大。

数据库中的每个项目都有许多列,其中我需要显示至少2列(Name, Price),尽管最好是3列。

这似乎是一个相当简单的任务,因为在应用程序的这一部分,我所需要做的就是读取数据库并列出它。我这样做没有任何问题,测试应用程序与一个小样本数据库。

在我的第一个版本中,我使用游标来获取查询,然后使用ArrayAdapter作为列表的适配器,在查询之后,我简单地从开始到结束循环游标,并且对于每个位置,我将游标的内容添加到适配器。

onItemClickListener与其他参数(基本上我打开类别)再次查询数据库,因此它清除适配器,然后循环游标并再次将其内容添加到适配器。

这个应用程序工作起来很有魅力,但是当我使用一个真实的大数据库(>300MB)时,我突然发现我的应用程序需要很长时间才能显示内容,有时甚至会阻塞。

所以我做了一些研究,并开始使用SimpleCursorAdapter,自动链接光标的内容到ListView使用通常的参数(String[] from, int[] to等,我使用android.R.layout。simple_list_item_2和android.R.id。Text1和text2).

问题是,这并没有改变加载的时间。

我在不同的网站和教程中遇到了一些建议的解决方案,其中大多数都以某种方式使用AsyncTask类。我试着自己手动实现这个,但很难跟踪多个线程,我失败了。

教程一直在告诉如何使用内容提供程序来做到这一点,但我发现我的具体情况并不清楚:非常大的SQLite数据库->读到ListView。

现在我的头充满了概念,如LoaderManager, LoaderAdapter等,所有的混合和混淆在我的头。

谁能给我一个完整的,漂亮的,干净的解决方案来做这个"简单"的任务?

再次:我想读取一个大的sqliteddatabase并在ListView中显示它。我希望应用程序不要阻塞。

我需要一个类,它具有一个成员函数,该函数以查询和ListActivity的上下文为参数,并负责在视图中显示查询的结果。

请不要给我抽象的答案。我快没时间了,我现在很困惑,我需要一个干净完整的解决方案。

你是我唯一的希望

如果你查询这么大的数据库会花很多时间,你需要找到一个聪明的方法,

就像限制你的数据库查询得到前10个或30个项目,然后维护,一旦最后一个项目查询其余30个项目,并绑定它们

参考本教程,它将教您如何在列表视图中动态添加数据

http://p-xr.com/android-tutorial-dynamicaly-load-more-items-to-the-listview-never-ending-list/

以上列表已过期,请检查此

http://mobile.dzone.com/news/android-tutorial-dynamicaly

如果您查询大型数据库,将需要时间来获取数据并显示在列表视图上。因此,最好在运行时填充数据。您可以使用Lazy Adapter概念来加载数据。这个链接可能对你有用。

谢谢

也可以使用:

public class TodosOverviewActivity extends ListActivity implements
    LoaderManager.LoaderCallbacks<Cursor>

最新更新