hepublic void loadRevenueDate() {
String dateFormat = "yyyy/MM/dd";
SimpleDateFormat formater = new SimpleDateFormat(dateFormat);
long l=0;
Calendar cal = Calendar.getInstance();
// Open database
db.open();
Cursor c = db.getRevData();
if (c.moveToFirst()) {
do {
l = c.getLong(3);
} while (c.moveToNext());
}
cal.setTimeInMillis(l);
String date = formater.format(cal.getTime());
revDate.setText(date);
// Close the cursor
c.close();
c = null;
// And close the database
db.close();
}
请帮帮我。提前谢谢。
答案 0 :(得分:1)
光标正确读取所有记录 - 但在重新分配给{{1}时覆盖并忽略以前的值变量。
在循环中“每行”执行操作,或以其他方式将相关数据保存到l
等集合中。我想你的UI需要重新设计,但这不会“跳过”任何值:
ArrayList
答案 1 :(得分:0)
从代码中看起来你只是迭代值,直到你到达最后一个。如果你想对所有值做一些事情,你需要在循环中添加一些东西:
public void loadRevenueDate() {
String dateFormat = "yyyy/MM/dd";
SimpleDateFormat formater = new SimpleDateFormat(dateFormat);
long l=0;
Calendar cal = Calendar.getInstance();
// Open database
db.open();
Cursor c = db.getRevData();
long accum = 0;
if (c.moveToFirst()) {
do {
l = c.getLong(3);
// Do something here. For example:
accum += l;
} while (c.moveToNext());
}
cal.setTimeInMillis(l);
String date = formater.format(cal.getTime());
revDate.setText(date);
// Close the cursor
c.close();
c = null;
// And close the database
db.close();
}
答案 2 :(得分:0)
这里的问题是你循环遍历所有结果行,在你对'l'做任何事情之前,将每行的long值分配给'l'一遍又一遍(覆盖之前的值)。所以当你使用'l'时(一旦循环完成),它将只包含最后一行的值。
如果您希望对分配给'l'的每个值执行某些操作,则需要在do ... while循环中执行此操作。即。
if (c.moveToFirst()) {
do {
l = c.getLong(3);
//Do the actual thing with this row's 'l' here
//E.g.
System.out.println("l is currently set to: " + l);
} while (c.moveToNext());
}
希望这是有道理的。