如何刷新我的观点

时间:2013-05-17 09:39:49

标签: android listview cursor simplecursoradapter

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

我在这里做错了什么?

0 个答案:

没有答案