从适配器限制ListView中的项目数

时间:2013-04-17 20:34:18

标签: android sqlite listview simplecursoradapter

我目前正在使用带有ListView的SimpleCursorAdapter,它使用来自ContentProvider和SQlite DB的CursorLoader来提取项目。该数据库包含大约300个项目,我想限制其适配器传递Listview的数量,因此ListView不会显示数据库中的所有项目。我想避免对db.query设置限制,而是保留适配器中的项目或限制ListView。我还没有找到一个优雅的解决方案。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

制作自定义适配器,并覆盖getCount函数以返回min(actual_number,max_you_want);

答案 1 :(得分:1)

  

数据库包含大约300个项目,我想限制其适配器传递Listview的数量,因此ListView不会显示数据库中的所有项目。

游标相当有效,300是一个相对较小的数字,所以你应该能够一次获取所有300。它们仅在ListView滚动时绘制。因此,如果您看到性能下降,问题可能在于渲染行,而不是Cursor。

  

我希望适配器获取数据并让ListView仅在到达可见项目末尾时显示它,例如一次加载25个项目。

这很简单,可以考虑如下查询:

//db.query(tableName, columns, where, whereArgs, groupBy, having, orderBy, limit);
int limit = 25;
Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null, String.valueOf(limit));

当您点击ListView的底部时,再向limit添加25个并再次运行查询:

limit += 25;
cursor = db.query(TABLE_NAME, null, null, null, null, null, null, String.valueOf(limit));

依此类推,直到limit >= cursor.getCount()