Android 如何刷新我的视图

Android 如何刷新我的视图,android,listview,cursor,simplecursoradapter,Android,Listview,Cursor,Simplecursoradapter,我有一个关于用光标中的新数据刷新listview的问题。 Cursor.requery()方法工作得很好,但不推荐使用,所以我尝试另一种方法,但效果不太好 到目前为止,我掌握的是以下代码: ListCursorAdapter mAdapter; ListView list; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); se

我有一个关于用光标中的新数据刷新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保持原样,只有在我旋转屏幕时才会显示新内容


我做错了什么?

调用notifydataset是从您的活动中更改的,而不是从适配器本身更改的。谢谢Iftikar。