【问题标题】:How to requery for a cursor now if requery is deprecated?如果不推荐使用重新查询,现在如何重新查询游标?
【发布时间】:2011-08-23 06:22:22
【问题描述】:

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

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

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

【问题讨论】:

    标签: android android-cursor


    【解决方案1】:

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

    另见this

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 您可以使用兼容性库,它适用于 1.6 及更高版本。或者,如果您不关心 Honeycomb,请保持原样。
        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2011-07-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多