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

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

  • 突出显示“ListFragment”中的选定项目?
  • java.lang.ClassCastException:android.widget.LinearLayout不能转换为android.widget.ListView
  • 如何过滤由SimpleCursorAdapter支持的Android ListView?
  • 不能添加标题视图列表 - setAdapter已被调用
  • ListView里面的ScrollView
  • 根据列表视图的内容对listview中的相似行进行分组
  • 如何在不扩展我的类中的ListActivity的情况下使用listview?
  • Android的 - ListView不会收到OnItemClick与可点击的链接的文本
  • 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); 

    更新我的列表视图。