Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在ListActivity中加载大型SQLite数据库_Android_Sqlite_Android Sqlite - Fatal编程技术网

Android 在ListActivity中加载大型SQLite数据库

Android 在ListActivity中加载大型SQLite数据库,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我正在做一个Android项目,我需要很快完成 该应用程序的一个功能是加载SQLite数据库内容并将其列在ListActivity内的ListView中 数据库包含几个表,其中2个非常大 数据库中的每个项目都有许多列,其中我需要显示至少2个(名称、价格),尽管最好是3个 这似乎是一项相当简单的任务,因为在应用程序的这一部分中,我需要做的就是读取数据库并列出它。我这样做没有任何问题,测试应用程序与一个小样本数据库 在我的第一个版本中,我使用一个游标来获取查询,然后使用一个ArrayAdapter作

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

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

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

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

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

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

onItemClickListener根据其他参数(基本上是我打开的类别)再次查询数据库,以便清除适配器,然后循环光标并将其内容重新添加到适配器

这个应用程序运行起来很有魅力,但当我使用一个真实的大数据库(>300MB)时,我突然发现我的应用程序显示内容花了很长时间,有时甚至会阻塞

因此,我做了一些研究,并开始使用SimpleCursorAdapter,它使用常用参数(String[]from、int[]to等,其中我使用了android.R.layout.simple_list_item_2和android.R.id.text1和text2)自动将光标的内容链接到ListView

问题是,is在加载时并没有太大变化

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

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

现在,我的脑子里充满了诸如LoaderManager、LoaderAdapter等概念,这些概念在我的脑子里都是混乱的

谁能为我提供一个完整的,好的,干净的解决方案来完成这个“简单”的任务

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

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

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


你是我唯一的希望。

如果你要查询这么大的数据库,需要使用tym,你需要找到一种聪明的方法

就像将数据库查询限制为获取前10个或30个项然后进行维护一样,一旦到达最后一个项,则查询其余30个项并绑定它们

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

上述清单已于本月到期


如果你查询这么大的数据库需要tym,你需要找到一个聪明的方法

就像将数据库查询限制为获取前10个或30个项然后进行维护一样,一旦到达最后一个项,则查询其余30个项并绑定它们

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

上述清单已于本月到期


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


谢谢

如果您查询大型数据库,则获取数据并在列表视图中显示数据需要时间。因此,最好在运行时填充数据。您可以使用惰性适配器概念来加载数据。此链接可能对您有用

谢谢

您还可以使用:

public class TodosOverviewActivity extends ListActivity implements
    LoaderManager.LoaderCallbacks<Cursor>
公共类TodosOverviewActivity扩展了ListActivity实现
LoaderManager.LoaderCallbacks
查看此项了解更多详细信息。

您还可以使用:

public class TodosOverviewActivity extends ListActivity implements
    LoaderManager.LoaderCallbacks<Cursor>
公共类TodosOverviewActivity扩展了ListActivity实现
LoaderManager.LoaderCallbacks

查看此项了解更多详细信息。

这似乎是一个明智的解决方案,非常感谢,我一定会尝试一下!这似乎是一个聪明的解决办法,非常感谢我一定会尝试!这似乎也很有用。谢谢这似乎也很有用。谢谢