如何在CursorAdapter使用情况下更新ListView?

我问的原因是因为requery()已经被弃用了。 现在刷新ListView的最好方法是什么?

Solutions Collecting From Web of "如何在CursorAdapter使用情况下更新ListView?"

requery()更新一个Cursor ,而不是一个CursorAdapter 。 正如你所说,它已被弃用,其替代是:

 oldCursor = myCursorAdapter.swapCursor(newCursor); // hands you back oldCursor 

要么:

 myCursorAdapter.changeCursor(newCursor); // automatically closes old Cursor 

myCursorAdapter.notifyDataSetChanged()通知ListView数据集已经改变,它应该刷新自己

使用BaseAdapter.notifyDataSetChanged() 。

您可以创build一个新的游标并在您的CursorAdapter实例上调用notifyDataSetChanged() (文档在这里 ),或者在您的适配器上调用notifyDataSetChanged() (文档在这里 )。

这是什么对我来说,我不知道它是最好的方式。

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

我刷新唯一的光标,我不知道如何做一个新的。 另外我不知道只有一个函数名称的答案。

唯一帮助我的是初始化新光标,类似于以前的光标,如:

 cursor = dbHelper.myDataBase.rawQuery(StaticValues.SQL_CAT, null); newCursor = dbHelper.myDataBase.rawQuery(StaticValues.SQL_CAT, null); 

然后打电话给:

 adapter.changeCursor(newCursor); 

更新我的列表视图。