Android 实时更新SQLite数据库时无法显示游标中的更新值

Android 实时更新SQLite数据库时无法显示游标中的更新值,android,database,sqlite,android-sqlite,android-cursor,Android,Database,Sqlite,Android Sqlite,Android Cursor,我对安卓系统还比较陌生,正在尝试一个模块一个模块地学习它是如何工作的。以下是我正在尝试做的: 显示带有收藏夹复选框的单词(图像)。如果用户点击它,则数据库将被更新,数据库表中的一列存储其值(1表示选中,0表示未选中)。我使用光标来检索word和favorite复选框的值。点击喜爱的图像可以正确地更新数据库,而不会出现任何问题 我面临的问题是: 除非我退出应用程序并再次启动它,否则游标不会获取最近对数据库所做的更改。为了进一步解释,当我导航到下一个/上一个单词(使用屏幕底部的按钮)时,检索到的值不

我对安卓系统还比较陌生,正在尝试一个模块一个模块地学习它是如何工作的。以下是我正在尝试做的:

显示带有收藏夹复选框的单词(图像)。如果用户点击它,则数据库将被更新,数据库表中的一列存储其值(1表示选中,0表示未选中)。我使用光标来检索word和favorite复选框的值。点击喜爱的图像可以正确地更新数据库,而不会出现任何问题

我面临的问题是:

除非我退出应用程序并再次启动它,否则游标不会获取最近对数据库所做的更改。为了进一步解释,当我导航到下一个/上一个单词(使用屏幕底部的按钮)时,检索到的值不是最新的值,即光标似乎仍然具有旧的数据库值,而不是更新的值

我确实通过Google、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);
}

光标不是动态的;它显示执行查询时数据库的快照


当数据库更改时,必须再次执行查询。

光标不是动态的;它显示执行查询时数据库的快照


当数据库发生更改时,您必须再次执行查询。

正如@Sreekanth在评论部分所建议的,每当点击收藏夹图像时,我都会更新光标。虽然它工作得很好,但我认为这是一个解决办法,而不是一个解决方案。也许我这样说是错的。

正如@Sreekanth在评论部分所建议的,每当点击喜爱的图像时,我都会更新光标。虽然它工作得很好,但我认为这是一个解决办法,而不是一个解决方案。也许我这样说是错的。

我认为如果你刷新页面,它会工作,bez如果你退出应用程序,它会正常工作。在将数据插入sqlite之后,再次获取数据以更新光标并重新加载页面。@Sreekanth这有什么帮助?据我所知,光标正在处理旧的数据集。@navneetsharma这似乎是一个合乎逻辑的解决方法,但不会导致资源过度使用,即每次单击喜爱的图像时,都会加载一个新的crusor?显示创建光标的代码。我想如果刷新页面,它会工作的,bez如果退出应用程序,则在将数据再次插入sqlite后,它将正常工作。请获取数据以更新光标并重新加载页面。@Sreekanth这有什么帮助?据我所知,是光标在处理旧数据集。@navneetsharma这似乎是一个合乎逻辑的解决方法,但这不会导致资源过度使用,即每次单击喜爱的图像时,都会加载一个新的crusor?显示创建光标的代码。