我有一个关于使用光标中的新数据刷新listview的问题。 Cursor.requery()方法工作得很好,但它已被弃用,所以我正在尝试另一种方法,但这种方法效果不佳。
到目前为止我所拥有的是以下代码:
ListCursorAdapter mAdapter;
ListView list;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
list = (ListView)findViewById(R.id.lvProducts);
Cursor productCursor = getContentResolver().query(Product.Products.CONTENT_URI, null, null, null, null);
mAdapter = new ListCursorAdapter(this,
R.layout.product_list_view,
productCursor,
new String[] {
Product.Products.PRODUCT_NAME,
Product.Products.PRODUCT_CODE
},
new int[] { R.id.product_name, R.id.product_code}, ListCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
list.setAdapter(mAdapter);
}
public class ListCursorAdapter extends SimpleCursorAdapter {
Cursor c;
public ListCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {
super(context, layout, c, from, to, flags);
this.c = c;
}
@Override
protected void onContentChanged() {
super.onContentChanged();
mAdapter.changeCursor(c);
mAdapter.notifyDataSetChanged();
//c.requery(); Deprecated
}
}
ListCursorAdapter.onContentChanged()被很好地调用,但ListView保持不变,只有当我旋转屏幕时才显示新内容。
我在这里做错了什么?