0

我有一个关于用光标中的新数据刷新列表视图的问题。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 保持不变,只有当我旋转屏幕时才会显示新内容。

我在这里做错了什么?

4

0 回答 0