cursor.getCount()で返される値が1つしかないことはわかっていますが、Androidカーソルが2回ループするという問題があります。
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 の同じ値が 2 つあります。c.moveToFirst() などをいじってみましたが、c.getCount() = 1 にもかかわらず、arrayList に 2 つの値が取得されます。