【发布时间】:2013-04-18 05:23:04
【问题描述】:
我目前正在使用带有 ListView 的 SimpleCursorAdapter,它使用 CursorLoader 从 ContentProvider 和 SQlite DB 中提取项目。数据库包含大约 300 个项目,我想限制适配器通过 Listview 的数量,因此 ListView 不会显示数据库中的所有项目。我想避免对 db.query 施加限制,而是在 Adapter 中保留项目或限制 ListView。我还没有找到一个优雅的解决方案。有什么想法吗?
【问题讨论】:
-
我不确定我是否理解 - 你为什么要这样做?
-
为什么不想限制 db.query?如果您不打算在 AdapterView 中显示数据,那么将数据加载到适配器有什么好处?
-
我试图这样做是为了防止我的 ListView 在创建时长为 300 个项目。我想让适配器获取数据并让 ListView 仅在到达可见项目的末尾时才显示它,例如一次加载 25 个项目。类似于 Twitter 如何显示 ListView 内容。希望这能澄清问题。
-
@Kyle 您误解了适配器和 ListViews 的工作方式。如果您进行查询,为您的适配器返回 300 个项目,然后只显示其中 25 个项目,您仍然会在加载所有 300 个项目时受到性能影响。是否为其他 275 个项目创建视图(列表中的行)是无关的。您要实现的目标是使用一个加载 25 的查询,然后使用另一个加载另一个 25 的查询,并在用户到达底部时将它们添加到当前数据中。没有用一个查询加载所有 300 个,然后将视图限制为仅显示其中的 25 个。
-
@FoamyGuy 你能提供一个这个查询过程的例子吗?
标签: android sqlite listview simplecursoradapter