在我的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_OBSERVER
与LoaderManager
一起使用... Loader
单独注册一个ContentObserver
,因此为CursorAdapter
注册一个既无用又浪费。