我想在所有listView中添加一个数字,这些数字来自SQLite。我使用for循环来添加它们,我使用游标来获取它们。问题是当我删除其中一个,除了最后一个,for循环不起作用。我发现游标有一个函数“isNull”,我想使用它,但它不起作用。
int itemNum=doListlist.getCount();
for(int i = 0; i < itemNum; i++){
if(cursor.isNull(i+1)==false){
float num=Float.parseFloat(listsDbAdapter.fetchData(tableName, i+1).getString(3));
float price=Float.parseFloat(listsDbAdapter.fetchData(tableName, i+1).getString(5));
total+=num*price;
}
else {
itemNum++;
}
}
如果你知道它总是出错的原因,请告诉我,谢谢!!!
答案 0 :(得分:0)
您可以将Cursor理解为表示内存中数据库表的一部分的对象(此内存表示是根据query
方法的参数构建的)。因此,Cursor是一个具有列数的表(您在query
方法中定义这些列)和此表中的多个行。
使用Cursor时,您可以按顺序读取这些行。然后在这些行中使用列值进行操作。
语句cursor.isNull(i+1)
表示在当前行中考虑i+1
列并检查此列中的值是否为空。
所以我猜你的for循环不合适。您应该使用游标的moveToNext()
方法浏览游标。
答案 1 :(得分:0)
试试这个` int itemNum = doListlist.getCount(); if(cursor!= null){
if (cursor.moveToFirst()) {
for(int i = 0; i < itemNum; i++){
float num=Float.parseFloat(listsDbAdapter.fetchData(tableName, i+1).getString(3));
float price=Float.parseFloat(listsDbAdapter.fetchData(tableName, i+1).getString(5));
cursor.moveToNext();
}
}
}
cursor.close();