更新列表视图
Update ListView
我从数据库接收到游标并设置和适配到 ListView。然后我向数据库插入新行,但我的 ListView 没有更新。
Cursor c = getContentResolver().query(GEN_URI, null, null, null, null);
String[] from = { DB.column_name };
int[] to = { R.id.textViewItem };
myAdapter = new SimpleCursorAdapter(this, R.layout.shop_list_item, c, from, to, SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER );
ShopList.setAdapter(myAdapter);
ContentValues newC = new ContentValues();
newC.put(DB.column_name, "Селёдочка");
Uri uri = getContentResolver().insert(SHOP_LIST_URI, newC);
getContentResolver().query(GEN_URI, null, null, null, null);
myAdapter.notifyDataSetChanged();
如果我设置标志 SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER - ListView 不更新。
如果我设置标志 SimpleCursorAdapter.FLAG_AUTO_REQUERY- ListView update.
做什么?
您必须通知适配器数据已更改并告诉它刷新。
adapter.notifyDataSetChanged();
当使用标志 autorequery 时,游标会自动重新查询,因此,您的列表视图正在更新,但据我所知,此 FLAG_AUTO_REQUEY 现在已弃用。
更新
经过一些谷歌搜索,我发现 notifyDataSetChanged 与 SimpleCursorAdapters 无关。
因此解决方法是 requers()。但正如我所说,它已被弃用,新方法是通过更改光标。
adapter.changeCursor(cursor) and send it to your adapter.
这里是 google 关于 requery() 的官方文档。
你可以试试myadapter.notifyDataSetChanged();
我从数据库接收到游标并设置和适配到 ListView。然后我向数据库插入新行,但我的 ListView 没有更新。
Cursor c = getContentResolver().query(GEN_URI, null, null, null, null);
String[] from = { DB.column_name };
int[] to = { R.id.textViewItem };
myAdapter = new SimpleCursorAdapter(this, R.layout.shop_list_item, c, from, to, SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER );
ShopList.setAdapter(myAdapter);
ContentValues newC = new ContentValues();
newC.put(DB.column_name, "Селёдочка");
Uri uri = getContentResolver().insert(SHOP_LIST_URI, newC);
getContentResolver().query(GEN_URI, null, null, null, null);
myAdapter.notifyDataSetChanged();
如果我设置标志 SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER - ListView 不更新。 如果我设置标志 SimpleCursorAdapter.FLAG_AUTO_REQUERY- ListView update.
做什么?
您必须通知适配器数据已更改并告诉它刷新。
adapter.notifyDataSetChanged();
当使用标志 autorequery 时,游标会自动重新查询,因此,您的列表视图正在更新,但据我所知,此 FLAG_AUTO_REQUEY 现在已弃用。
更新
经过一些谷歌搜索,我发现 notifyDataSetChanged 与 SimpleCursorAdapters 无关。
因此解决方法是 requers()。但正如我所说,它已被弃用,新方法是通过更改光标。
adapter.changeCursor(cursor) and send it to your adapter.
这里是 google 关于 requery() 的官方文档。
你可以试试myadapter.notifyDataSetChanged();