我有一个由数据库Cursor通过SimpleCursorAdapter支持的安卓ListActivity。
单击这些项时,数据库中相应行中的标志字段将被切换,并且需要更新列表中的视图。
问题是,当更新的视图离开屏幕并被回收时,当视图返回视图时,旧值会显示在视图上。当列表被重新绘制时,同样的事情也会发生(方向改变,等等)。
我使用notifydatasetchanged()刷新光标适配器,但它似乎无效。
我应该如何更新数据库,以便游标也被更新?
发布于 2010-01-01 00:39:58
当您更改数据库中希望反映在Cursor中的数据(或Cursor填充的内容,如通过CursorAdapter生成的ListView )时,在Cursor上调用requery()。
Cursor类似于ODBC客户端游标--它保存查询结果表示的所有数据。因此,仅仅因为您更改了数据库中的数据,Cursor就不会知道这些更改,除非您通过requery()刷新它。
更新:由于年龄增长,整个问题和答案都应该删除,但这显然是不可能的。任何寻找Android答案的人都应该记住,Android是一个快速移动的目标,2009年的答案通常比新的答案更糟糕。
当前的解决方案是获取一个新的Cursor,并在CursorAdapter上使用changeCursor()或swapCursor()来影响数据更改。
https://stackoverflow.com/questions/1985955
复制相似问题