Android ListFragment 游标管理

Posted

技术标签:

【中文标题】Android ListFragment 游标管理【英文标题】:Android ListFragment Cursor managing 【发布时间】:2011-07-10 23:05:52 【问题描述】:

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

在Fragment中,是否有用Fragmemt生命周期管理游标API

活动有“startManagingCursor(Cursor c)”

Fragment 在其生命周期内自动管理游标?

【问题讨论】:

【参考方案1】:

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

在您的 ListFragment 中,您将实现 LoaderManager.LoaderCallbacks 接口,然后使用 LoaderManager 中的 initLoader() 和 restartLoader() 在 ListFragment 的生命周期中管理您的数据和游标。底层适配器必须支持 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);
    

【讨论】:

以上是关于Android ListFragment 游标管理的主要内容,如果未能解决你的问题,请参考以下文章

使用 SQLite 的 Android 简单 ListFragment

Android开发笔记(13)——ListFragment

ScrollView Android 中的 ListFragment

Android:无法让 Checkbox OnClickListener 在 ListFragment 中工作

从 ListFragment android 启动另一个 Fragment

ListFragment:运行时错误“您的内容必须有一个 id 属性为 'android.R.list' 的 ListView