2014-07-15 18 views
0

我對Android相當陌生,試圖通過模塊學習模塊是如何工作的。以下是我想要做的事情:實時更新SQLite數據庫時無法顯示來自光標的更新值

用收藏夾複選框顯示單詞(圖片)。如果用戶點擊它,則數據庫被更新並且數據庫表中的列存儲其值(1表示選中,0表示未選中)。我使用遊標來檢索單詞和收藏夾複選框的值。點擊最喜歡的圖像正確更新數據庫沒有任何問題。

我現在面臨的問題是:

除非我退出應用程序,並再次啓動它,光標不會取最近對數據庫所做的更改。爲了進一步解釋它,當我導航到下一個/上一個單詞時(使用屏幕底部的一個按鈕),檢索到的值不是最新的,即它看起來像光標仍舊具有舊的數據庫值,而不是更新的值。

我通過谷歌搜索,StackOverflow得到一個具體的解決方案,但它似乎我沒有使用正確的搜索條件。我知道這與更新光標有關,並且事實上查詢已折舊,但我又失去了方向。

[編輯]使用下面提到的方法來獲得光標:

public Cursor getWords() { 

     SQLiteDatabase db = getReadableDatabase(); 
     SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); 

     String[] sqlSelect = {"_id", "word", "favourite"}; 
     String sqlTables = "word_list"; 

     qb.setTables(sqlTables); 
     Cursor c = qb.query(db, sqlSelect, null, null, 
       null, null, null); 

     c.moveToFirst(); 
     return c; 
    } 

此方法時,用戶點擊最喜愛的圖像上,以更新數據庫名爲:

public void setFavWord(int markFav, int wordPos) { 

    SQLiteDatabase db = getWritableDatabase(); 
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); 

    ContentValues values = new ContentValues(); 
    values.put("favourite", markFav); 

    db.update("word_list", values, "_id = " + wordPos, null); 
} 
+0

我想如果你刷新頁面,它會工作,bez如果你退出應用程序它正在正常工作 – Sree

+0

向sqlite插入數據後再次獲取數據更新光標和重新加載頁面。 –

+0

@Sreekanth如何幫助?據我所知,這是處理舊數據集的光標。 – Paritosh

回答

3

光標不是動態;它顯示查詢執行時的數據庫快照。

當數據庫發生更改時,必須再次執行該查詢。

0

正如@Sreekanth在評論部分中所建議的那樣,每當最喜歡的圖像被點擊時,我都會更新遊標。雖然它工作得很好,但我認爲它是一種解決方法而不是解決方案。也許我這樣說是錯的。