在手机应用程序(Froyo)上使用Android CursorLoaders和其他Honeycomb功能

Met*_*aft 2 android cursor android-3.0-honeycomb

我一直在使用Froyo(我的手机版)开发手机应用程序.我想转而在项目中加入Honeycomb.

我已将Android兼容包导入到我的项目中.我当前的应用程序从SQLite数据库中读取.从所述数据库加载图库和各种GridView和ListView.我不知道接下来该做什么.我是否将活动切换到FragmentActivities?如何从我当前的游标转到CursorLoaders?这对我加载图库和网格/列表视图的自定义适配器有何影响?等等...

我很感激你能给予的任何帮助和建议.我很难掌握如何转换我拥有的东西并允许两者共存.我真的想以"正确的方式"做到这一点.

编辑:我意识到这是一个相当广泛的"问题".所以,让我们专注于Cursor to CursorLoader的事情.我会为其他项目创建新问题.

HaM*_*ReD 5

使用兼容性库,我使用了CursorLoader和Fragments目标2.1.

如果你有一个ContentProvider支持它们,装载程序很容易,Fragments需要使用FragmentActivity(也许是LoaderCursors).

然而,加载器确实需要LoaderManager.LoaderCallbacks接口.

装载机有一个生命周期,我手边没有代码,但就像这样.

LoaderManager.InitLoader(USER_SPECIFIED_ID_OF_LOADER);
Run Code Online (Sandbox Code Playgroud)

----最终调用--->

Loader<Cursor> onCreateLoader(int id, Bundle args) {
      return new CursorLoader(getActivity(), baseUri,
             CONTACTS_SUMMARY_PROJECTION, select, null,
            Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
}
Run Code Online (Sandbox Code Playgroud)

这是你的Loader完成其加载器的事情,我只在我的代码中使用CursorLoader,所以我不知道更多关于gritty细节.

加载器完成后,将调用最终的回调.

public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
    //Do whatever you want with your cursor here.
}
Run Code Online (Sandbox Code Playgroud)

也就是说,他们工作得很好,按照预期完成工作,两个大拇指.

*编辑:还有一个onLoaderRestarted()可能会在您重新启动加载程序时被调用,而不确定它何时被调用.