2015-02-23 70 views
-2

我目前正在創建一個應用程序,從服務器下載列表並將這些列表放入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之前再次從服務器檢索所有數據,但我仍然不知道如何解決原始問題,這使我應用程序更依賴於互聯網連接,所以它不是完美的,但現在必須做。

+0

刪除不是問題,所以我沒有添加代碼。在刪除行後,我在同一活動中調用完整的數據庫,並將行顯示爲已刪除。問題是,在這次檢查後,我回到我的Mainactivity,它仍然顯示那裏的行。但是我會添加刪除方法以獲得更好的效果。 – Daemun 2015-02-23 09:08:25

+0

Listview也不是問題,我已經測試過它,它的工作原理應該如此。問題是它仍然從數據庫中檢索應該被刪除的數據。 – Daemun 2015-02-23 09:13:32

+0

顯然不是因爲我有這個問題。 – Daemun 2015-02-23 09:15:30

回答

0

刪除單個項目必須使用

public void deleteRule(String value) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     db.delete(Table_Name, Key_value + " = ?", 
       new String[] { value }); 
     db.close(); 

    } 

希望它能幫助。

+0

感謝您的幫助,但我的刪除方法的作品。之後,麻煩開始了。 – Daemun 2015-02-23 09:10:48

+0

您正在從服務器加載文件,因此文件將從本地數據庫中刪除,而不是從服務器數據庫中刪除。 – 2015-02-23 09:12:09

+0

在加載Mainactivity之前將數據從服務器中取出並放入我的SQLite數據庫,從那時起我只使用SQLite數據庫。 – Daemun 2015-02-23 09:18:51