如果requery被弃用了,现在如何重新查询游标?

7

如标题所述,我们以前使用 cursor.requery() 来调用该函数,但现在它已经被废弃了,目前应该如何调用这个函数?

该方法已被废弃,请勿使用。只需请求一个新游标即可,这样您就可以异步地执行此操作,并在新游标返回后更新您的列表视图。

那么,如何请求一个新的游标并将其传递回适配器呢?

4个回答

2

想象一下,当你需要反复使用光标时,你需要填充一个块并用查询进行操作。在重复使用之前,请关闭它。

{
    Cursor c =//Populating cursor again
    while (c.moveToNext()) {
    }
    if (c != null) c.close();
}

2

当执行任何DML查询时,重新初始化光标。

参见此链接


1
使用Loader来管理您的光标。它将根据需要返回一个新的光标,您可以在适配器上使用swapCursor()来刷新数据。

1
你可以使用兼容性库,它适用于1.6及以上版本。或者,如果你不关心蜂巢版本,就保持原样。 - Nikolay Elenkov

-1

我使用了ListAdapter.notifyDataSetChanged();这只在列表(如ArrayList)中,当列表内容改变时才有效。

使用数据库输出后,它不再起作用。因此,我采用了cursor.requery();,但它不仅已经过时,而且只有在数据库条目更改时才有效。

但现在,我想通过在数据库中更改设置来更改我的视图(在生日和日期之间切换),所以requery无法识别它。

对于所有更改都有效(有点不太好的方法):this.onCreate(null);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接