我目前正在創建一個應用程序,從服務器下載列表並將這些列表放入SQLite數據庫。在Mainactivity中,它調用數據庫中的列表並將它們放入一個自定義適配器中,一切工作正常。Android - SQLite數據庫不斷顯示應該刪除的行
在此之後,我經歷了幾個屏幕來處理listdata,並且在最後的活動中它使用查詢從db中刪除它正在處理的行。在此之後,我使用logcat打印數據庫,並顯示該行已被刪除。
接下來它將我帶回Mainactivity,並在其onResume中再次從db加載列表,以發現應該刪除的行仍在其中。 listview被正確更新,這實際上是一個從數據庫中檢索應該被刪除的數據的問題。
那麼,有人有一個想法,爲什麼我得到的行已被刪除在另一個活動?
Mainactivity:
private List<String> list = new ArrayList<>();
public void onResume() {
super.onResume();
context = getApplicationContext();
ConsLoadListDataSource cllDataSource = new ConsLoadListDataSource(context);
cllDataSource.open();
list = cllDataSource.sqliteToListIds();
cllDataSource.close();
logcat("Jadajada: " + list.toString());
}
SQLiteHelper:
public List<String> sqliteToListIds() {
List<String> conList= new ArrayList<>();
if (!db.isOpen()) {
open();
}
Cursor cursor = db.query(ConsLoadListSQLHelper.TABLE_CONS_HEADER,
allConsListColumns, null, null, "loadlist" , null, "loadlist");
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
conList.add(cursor.getString(1));
cursor.moveToNext();
}
db.close();
return conList;
}
的刪除方法的工作原理,但因爲它是被要求爲:
public void deleteList(int id) {
if (!db.isOpen()) {
open();
}
db.delete(ConsLoadListSQLHelper.TABLE_CONS_HEADER,
ConsLoadListSQLHelper.CONS_HEADER_ID + " = " + id, null);
db.close();
}
編輯
我發現了一種解決方法,通過刪除服務器上的行並在返回MainActivity之前再次從服務器檢索所有數據,但我仍然不知道如何解決原始問題,這使我應用程序更依賴於互聯網連接,所以它不是完美的,但現在必須做。
刪除不是問題,所以我沒有添加代碼。在刪除行後,我在同一活動中調用完整的數據庫,並將行顯示爲已刪除。問題是,在這次檢查後,我回到我的Mainactivity,它仍然顯示那裏的行。但是我會添加刪除方法以獲得更好的效果。 – Daemun 2015-02-23 09:08:25
Listview也不是問題,我已經測試過它,它的工作原理應該如此。問題是它仍然從數據庫中檢索應該被刪除的數據。 – Daemun 2015-02-23 09:13:32
顯然不是因爲我有這個問題。 – Daemun 2015-02-23 09:15:30