2012-08-17 47 views
1

我有一個問題,使用android遊標循環兩次,即使我知道在cursor.getCount()中只返回一個值。Android SQLite光標循環兩次

我使用的是在將對DBAdapter如下:

​​

然後,我稱之爲我的工作人員類中:

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中的兩個值!

+0

我不知道這是否與onCreate和onResume有關。當我開始活動時,我調用數據庫工作,也稱爲onResume(在更改後重新填充ListViews)。看看http://developer.android.com/reference/android/app/Activity.html建議在onCreate中使用onResume,所以我可能應該使用onRestart? – iaindownie 2012-08-17 12:40:22

回答

1

終於釘了這個。這與類變量和方法變量有關。我有一個類變量被onCreate中的一個方法填充,它也在onResume中被調用。解決方案是將該變量移入該方法。愚蠢的錯誤,易於修復,難以找到(對我而言)。