Android ListFragment Cursor管理

时间:2011-03-08 09:03:15

标签: android android-fragments android-support-library android-loadermanager

我想为我的Android应用程序使用ListFragment和Loader类。 (蜂窝级SDK,但谷歌发布可比性包)

在Fragment中

是否有使用Fragmemt生命周期管理游标API

活动有“startManagingCursor(Cursor c)

片段在其生命周期中自动管理光标吗?

1 个答案:

答案 0 :(得分:2)

我不确定我的问题是否正确,但如果您在使用Loader时询问您的光标是否在ListFragment中自动管理,那么我相信答案是:是的,确实如此。

在ListFragment中,您将实现LoaderManager.LoaderCallbacks接口,然后使用LoaderManager中的initLoader()和restartLoader()在ListFragment的生命周期中管理您的数据和游标。底层的adatpter必须支持swapCursor()方法才能使其发挥最佳效果。

有些事情:


class Foo extends ListFragment implements LoaderManager.LoaderCallbacks {

    private MyAdapter   mAdapter;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mAdapter = new MyAdapter();
        getLoaderManager().initLoader(0, null, this);
    }

    @Override
    public Loader onCreateLoader(int id, Bundle args) {
        Uri MY_URI = "your data URI goes here";
        return new CursorLoader(getActivity(), MY_URI, MY_PROJECTION, selection, selectionArgs, sortOrder);
    }

    @Override
    public void onLoadFinished(Loader loader, Cursor data) {
        mAdapter.swapCursor(data);
    }

    @Override
    public void onLoaderReset(Loader loader) {
        mAdapter.swapCursor(null);
    }
}