@SuppressWarnings("deprecation")
public List<Picture> returnLimitedList(int offset, int end) {
List<Picture> pictureList = new ArrayList<Picture>();
int startRow = offset;
int maxRows = end;
try {
QueryBuilder<Picture, Integer> queryBuilder = dao.queryBuilder();
queryBuilder.offset(startRow).limit(maxRows);
pictureList = dao.query(queryBuilder.prepare());
} catch (SQLException e) {
e.printStackTrace();
}
return pictureList;
}
ex:(0 - 30)
还有其他方法可以返回初始索引和结束索引的有限列表吗?
答案 0 :(得分:14)
这个问题在两个月前被问过,但如果有人偶然发现了和我一样的问题,我会回答。
对于offset
在这种情况下的含义存在误解,下面是SQLite Documentations对此的说法
如果表达式具有OFFSET子句,则SELECT语句返回的结果集中将省略前M行,并返回下N行,其中M和N是OFFSET和LIMIT子句求值的值, 分别。
根据您的查询,您将从#11行开始返回30行。
所以正确的方法是:
queryBuilder.offset(startRow).limit(20);
limit
是要返回的行数,而不是结束行。
pictureList = dao.query(queryBuilder.prepare());
返回的List
,第一个值从pictureList.get(0)
编辑: @Gray对评论的帮助