1

尽管我知道 cursor.getCount() 中只返回一个值,但我遇到了 android 游标循环两次的问题。

我在 DBAdapter 中使用以下内容:

public Cursor getAllSubDetailsFromObsTable() {
Cursor c = mDb
        .rawQuery(
                "SELECT DISTINCT sub.sub_id, sub.complete, mobileobs.date, mobileobs.location, mobileobs.grid_ref, "
                        + "mobileobs.time, mobileobs.protocol_id, mobileobs.endtime FROM sub, mobileobs "
                        + "WHERE sub.sub_id = mobileobs.sub_id",
                null);
return c;
}

然后我在我的工人阶级中称之为:

db.open();
Cursor c = db.getAllSubDetailsFromObsTable();
while (c.moveToNext()) {
        String sub_id = c.getString(0);
        //Rest of real code <snipped>
        myArrayList.add(sub_id);
}
c.close();
db.close();

但是,当我查看 myArrayList 的内容时,它有两个相同的 sub_id 值。我尝试过使用 c.moveToFirst() 等等等等,但是即使 c.getCount() = 1,我仍然在 arrayList 中得到两个值!

4

1 回答 1

1

终于搞定了。它与类变量和方法变量有关。我有一个由 onCreate 中的方法填充的类变量,该方法也在 onResume 中调用。解决方案是将变量移动到方法中。愚蠢的错误,容易修复,很难(对我来说)找到。

于 2012-10-15T16:33:07.853 回答