7

根据标题,如果我们曾经调用cursor.requery(),但现在已弃用。你现在如何调用这个函数?

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

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

4

4 回答 4

2

想想一个你需要一次又一次使用光标的块。用查询填充它。使用它,然后在重用之前关闭

{
    Cursor c =//Populating cursor again
    while (c.moveToNext()) {
    }
    if (c != null) c.close();
}
于 2011-08-23T06:30:55.127 回答
2

执行任何 DML 查询时重新初始化游标。

另请参阅

于 2011-08-23T06:35:27.837 回答
1

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

于 2011-08-23T06:29:38.510 回答
-1

我用ListAdapter.notifyDataSetChanged();当列表内容发生变化时,这仅适用于列表(如 ArrayList)。使用数据库输出,它不再工作了。因此我选择了cursor.requery(); 这不仅是贬义的。它也仅在数据库条目更改时才有效。

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

对于所有更改都有效(有点脏):this.onCreate(null);

于 2013-09-30T21:55:01.047 回答