所以,我有一个查询返回一个带有所有值的Cursor(我用cursor.getCount()确认了这一点,其中返回的int等于数据库中的记录数),但由于某种原因,无论迭代什么-loop我写的我似乎永远无法检索列表的第一个值。
private void addAllUnsentCrapportsToList() {
mDbAdapter.open();
Cursor cursor = mDbAdapter.getAllCrapports();
cursor.moveToFirst();
String text = "";
while(cursor.isAfterLast() == false){
text = text
+ "typ: " + cursor.getString(cursor.getColumnIndex(DbAdapter.CRAPPORT_KEY_GARBAGETYPE))
+ " kommentar: " + cursor.getString(cursor.getColumnIndex(DbAdapter.CRAPPORT_KEY_COMMENT))
+ "\n";
cursor.moveToNext();
}
unsentCrapportList.setText(text);
}
这段代码显示所有值,不包括第一个。我究竟做错了什么?我尝试了很多种方法,包括同时,等等,但总是遇到同样的错误。
我错过了什么?
答案 0 :(得分:1)
使用
可能更好if (cursor.moveToFirst()) {
while (cursor.moveToNext()) {
// Your code
}
}
答案 1 :(得分:1)
我没看到你的代码有什么问题。那么也许你没有从db
得到第一个值?您是否尝试在cursor.moveToFirst();
之后打印数据以查看哪个是第一个元素?
答案 2 :(得分:1)
事实证明代码没有任何问题。我不得不在Eclipse中进行“项目清理”,然后重新启动模拟器。无论如何,感谢所有答案。
答案 3 :(得分:0)
cursor.moveToFirst();
while (cursor.moveToNext()) {
// Your code
}
这从未让我失望过。试一试,看看它是怎么回事?
使用LOG进行一些日志记录以查看您获得的内容并查看数据库的外观 http://sourceforge.net/projects/sqlitebrowser/
编辑:顺便说一下,你没有使用startManagingCursor(cursor);
的任何特殊原因?可能不会导致错误,只是想知道,因为它似乎很方便。