2

在我的 ListView Activity 中,使用 LoaderManager 管理光标并且还有一个自定义 CursorAdapter

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

注册 Adapter 时,会传递一个空游标,由 LoaderManager 管理

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

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

有一个

getCursor();

可用于在 CursorAdapter 中获取光标的方法,但在哪个回调方法中我确定 LoaderManager 已完成对 Cursor 的数据加载准备好进行操作

谢谢

4

2 回答 2

2

我确定在哪个回调方法中LoaderManager已经完成了加载Cursor准备好操作的数据?

LoaderManager不“加载”任何东西......相反,它指示查询Loader数据源(在ContentProvider这种情况下,我假设)。然后CursorLoader通知LoaderManager它的加载完成并且Cursor已经创建。最后,使用加载的数据LoaderManager调用回调的onLoadFinished()方法(您很可能在您的 中实现)。Activity

此外,您不需要单独使用CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER...LoaderManager寄存器Loadera ContentObserver,因此为 a 注册一个CursorAdapter既无用又浪费。

于 2012-08-03T22:30:36.723 回答
-1

有一个onContentChanged()方法会在光标发生一些变化时触发。如果您正在使用内容提供程序和 URI,则此方法有效。希望这有帮助。

于 2012-06-04T17:06:44.847 回答