代码之家  ›  专栏  ›  技术社区  ›  CodeFusionMobile

当项目数发生变化时,如何更新绑定到listview的游标适配器?

  •  6
  • CodeFusionMobile  · 技术社区  · 14 年前

    我有一个基于游标适配器的自定义适配器支持的ListView。

    我给它的游标基于数据库中的注释列表(每个注释都是DB行)。

    一切正常,直到我从数据库中删除一个注释。我不知道如何正确地更新cursor/adapter/listview以显示新数据。

    adapter.notifyDataSetChanged() cursor.requery() 刷新UI,但在这种情况下两者似乎都不起作用。我能够刷新它的唯一方法是从一个新查询创建一个新游标并调用 adapter.changeCursor(newCursor)

    3 回复  |  直到 13 年前
        1
  •  9
  •   Pratik Butani Umesh N    11 年前

    requery 然后 notifyDataSetChanged .

        2
  •  1
  •   JRL    14 年前

    调用requery将重新执行用于创建游标的确切查询—也就是说,它不会重新执行代码中的实际方法。因此,如果您的方法包含动态内容(如基于首选项排序),则不会更新它。在这种情况下,您不希望使用相同的查询,而是希望使用不同的查询。

        3
  •  0
  •   Jackd    10 年前

    这是我的工作,我不确定这是最好的方式。

    c = db.rawQuery( "SELECT * FROM mytable", null); //same line of the first initialization
    adapter.swapCursor(c);
    

    我刷新了唯一的光标,我不知道如何处理一个新的。