我的光标是从sqlite获取数据。
msgsdbadapter = new MSGSDBAdapter(this);
msgsdbadapter.open();
cons_cursor = msgsdbadapter.fetchConversations();
startManagingCursor(cons_cursor);
之后我创建一个SimpleCursorAdapter并将其分配给ListView。 ListView现在可以很好地显示一些记录。
String[] from = new String[] { MSGSDBAdapter.KEY_FROM, MSGSDBAdapter.KEY_MSG, MSGSDBAdapter.KEY_DATE};
int[] to = new int[] { R.id.lblFrom, R.id.lblMsgExcerpt, R.id.lblDate };
cons_cursor_adapter = new SimpleCursorAdapter(context, R.layout.conversation_item, cons_cursor, from, to);
lvConversations.setAdapter(cons_cursor_adapter);
接下来,我在表中插入新行并通知数据集已更改,但ListView不是更新
msgsdbadapter.createMsg(msg);
cons_cursor_adapter.notifyDataSetChanged();
当我关闭数据库连接时?
答案 0 :(得分:7)
您需要requery()
现有Cursor
,或再次运行查询以获得新的Cursor
并将新的Cursor
换入您的CursorAdapter
答案 1 :(得分:0)
如果您使用ListFragment将最佳解决方案放在此示例中,那么最佳解决方案是:
public SimpleCursorAdapter myNote;
public class NOteLIST_MAIN extends ListFragment {
@SuppressWarnings("deprecation")
@Override
public void onResume() {
super.onResume();
myNote.getCursor().requery();//Don't forget to put these on onResume }
private void DataLoader(){private void DataFiller(){
myNote = new SimpleCursorAdapter(getActivity(), R.layout.notes_row_line, notesCursor, from, to,0);
setListAdapter(myNote);}
}