CursorAdapter和FLAG_REGISTER_CONTENT_OBSERVER

时间:2011-10-25 02:13:26

标签: android android-cursoradapter android-loadermanager android-cursorloader

在我的ListView Activity中,使用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的回调方法已准备好被操作

感谢

2 个答案:

答案 0 :(得分:2)

  

在哪种回调方法中,我确定LoaderManager已完成加载Cursor的数据已准备好进行操作?

LoaderManager没有“加载”任何内容...而是指示 Loader查询数据源(ContentProvider情况,我假设)。然后CursorLoader会在LoaderManager加载完成并且已创建Cursor时通知LoaderManager。最后,onLoadFinished()使用加载的数据调用回调的Activity方法(您最有可能在CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER中实现)。

此外,您无需LoaderManager使用Loader ContentObserver自己注册CursorAdapter,因此请为{{1}}注册一个{{1}} {1}}无用而浪费。

答案 1 :(得分:-1)

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