Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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 游标适配器的用途是什么?_Android_Sqlite_Listview_Android Listview - Fatal编程技术网

Android 游标适配器的用途是什么?

Android 游标适配器的用途是什么?,android,sqlite,listview,android-listview,Android,Sqlite,Listview,Android Listview,现在,我使用ListView和ArrayAdapter显示来自sqlite的数据。我以前的实现是从db中检索并设置为arrayAdapter。然后在listview中设置适配器 但现在正在考虑转向高效适配器。如果sqlite有数千条记录呢?我知道我必须先检索前20条记录,然后根据scroll检索下一条记录。我想知道我可以通过使用游标适配器来实现吗?或者我可以知道更好的解决方案。您可以使用一个线程从数据库检索数据并将其放入地图或列表中。然后,当您需要数据时,如从地图滚动读取时的每20条记录。这可能

现在,我使用ListView和ArrayAdapter显示来自sqlite的数据。我以前的实现是从db中检索并设置为arrayAdapter。然后在listview中设置适配器


但现在正在考虑转向高效适配器。如果sqlite有数千条记录呢?我知道我必须先检索前20条记录,然后根据scroll检索下一条记录。我想知道我可以通过使用游标适配器来实现吗?或者我可以知道更好的解决方案。

您可以使用一个线程从数据库检索数据并将其放入地图或列表中。然后,当您需要数据时,如从地图滚动读取时的每20条记录。这可能对你有帮助

只需在数据库和视图之间创建另一层


首先,我使用CursorAdapter的主要原因是,如果sqlite中的数据发生更改,内容将自动更改。如果下面有什么变化,我不需要考虑刷新UI。

其次,sqlite的
查询
列表视图
已经进行了一些您想要的优化。默认情况下,sqlite不会给出执行查询时的所有数据。它使用一个滑动窗口逐步给出查询结果。而且
listview
也不会一次绘制所有项目,而是在用户向下滚动时绘制项目


希望这会有所帮助,尽管这并不能准确回答您的问题,但当数据库/服务器响应中有数千条记录或从中获取信息时,最好的做法是使用“延迟加载”技术,基本上就是向用户显示数据集块,例如,每次显示50个元素,不需要加载甚至可能不使用的950个元素,这种技术也大大提高了应用程序响应和内存,现在如何实现它实际上取决于您自己,有一个BaseAdapter类可以自己完成,或者游标/数组适配器的良好实现也可以完成这一任务

值得一提的是,游标有一个优点:

Cursor允许Android通过检索资源更高效地管理资源 以及根据需要释放行和列值

希望有帮助

问候