Android 更新列表视图

Android 更新列表视图,android,listview,android-listview,Android,Listview,Android Listview,我从数据库接收到游标,并将andapter设置为ListView。然后我将新行插入数据库,但我的ListView并没有更新 Cursor c=getContentResolver().query(GEN_URI,null,null,null); 字符串[]from={DB.column_name}; int[]to={R.id.textViewItem}; myAdapter=new SimpleCursorAdapter(这个,R.layout.shop\u list\u项,c,from,t

我从数据库接收到游标,并将andapter设置为ListView。然后我将新行插入数据库,但我的ListView并没有更新

Cursor c=getContentResolver().query(GEN_URI,null,null,null);
字符串[]from={DB.column_name};
int[]to={R.id.textViewItem};
myAdapter=new SimpleCursorAdapter(这个,R.layout.shop\u list\u项,c,from,to,SimpleCursorAdapter.FLAG\u REGISTER\u CONTENT\u OBSERVER);
ShopList.setAdapter(myAdapter);
ContentValues newC=新ContentValues();
新增put(DB.列名称,“Счёччаа”);
Uri=getContentResolver().insert(SHOP\u LIST\u Uri,newC);
getContentResolver().query(GEN_URI,null,null,null,null);

myAdapter.notifyDataSetChanged()您必须通知适配器数据已更改,并告诉它刷新

adapter.notifyDataSetChanged();
当使用标志autorequery时,光标会自动重新查询,因此,listview会得到更新,但据我所知,这个标志AUTO-REQUEY现在已被弃用

更新

通过谷歌搜索,我发现notifyDataSetChanged与SimpleCursorAdapter无关

因此,解决方法是requers()。但正如我所说的,它已被弃用,新方法是通过更改光标

adapter.changeCursor(cursor) and send it to your adapter.

这是谷歌关于requery()的官方文档。

您可以试用myadapter.notifyDataSetChanged()

您尝试过myAdapter.notifyDataSetChanged()吗;更新数据后?请参阅CursorAdapter#onContentChanged,在使用标志_REGISTER_CONTENT_OBSERVER标志时调用此方法,您可以在CursorAdapter中重写该方法并执行任何操作,基本实现如下:我添加了myAdapter.notifyDataSetChanged();但是ListView仍然没有更新@ССаСаСПааааСаПааааааааааааа;myAdapter.changeCursor(newC);