在我的ListView活动中,使用LoaderManager来管理光标,并且还具有一个Custom CursorAdapter

mAdapter = new CustomCursorAdapter(getActivity(), null,CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
setListAdapter(mAdapter);


注册适配器时,将传递一个空游标,该游标由LoaderManager管理

getLoaderManager().initLoader(3, null, this);


现在需要为此CustomCursorAdapter实现SectionIndexer。我的问题是在CustomCursorAdapter构造函数中,光标最初将为null,如何知道何时准备好Cursor。

有一个

getCursor();


可用于在CursorAdapter中获取光标的方法,但是在其中的回调方法中,我确信LoaderManager已完成将数据加载到Cursor中的操作已准备就绪

谢谢

最佳答案

我可以肯定使用哪种回调方法确定LoaderManager已将准备好处理的数据装入Cursor吗?


LoaderManager不会“加载”任何内容……而是指示Loader查询数据源(在这种情况下,我假设为ContentProvider)。然后,CursorLoader会在完成加载并创建LoaderManager时通知Cursor。最后,LoaderManager使用加载的数据调用回调的onLoadFinished()方法(您很可能在Activity中实现了该方法)。

另外,您不需要将CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVERLoaderManager一起使用... Loader单独注册一个ContentObserver,因此为CursorAdapter注册一个既无用又浪费。

08-16 13:08