29

尝试更新我不推荐使用某些方法的旧应用程序。我发现如果我想使用显示来自 db 的数据的 ListView,我应该使用 LoaderManager + CursorLoader。CursorLoader 与内容提供者一起工作。那么对于我的数据库中的每个表,我现在应该创建内容提供程序吗?我为什么要 ?据我所知,内容提供者用于与其他应用程序共享一些数据库信息,但我的应用程序不共享任何信息。那么我可以在没有内容提供者的情况下使用 CursorLoader 吗???

4

2 回答 2

22

我写了一篇关于这个主题的博客文章。您还可以查看此答案以获取更多信息。希望它会为您解决问题。

正如 Barak 所提到的,可以通过扩展类来实现CursorLoader没有内容提供者。AsyncTaskLoader<Cursor>也就是说,大多数教程和示例代码都使用ContentProviders,而且 Android 团队似乎也鼓励使用它。它也比实现自己的类要简单得多。

也就是说,如果您真的不想使用内容提供程序,Dianne Hackborn(Android 框架开发人员之一,在 SO 上也称为“hackbod”)建议编写自己的加载程序,使用您的数据库类而不是内容提供者。最简单的方法就是CursorLoader从兼容性库中获取类的源代码,并将提供者查询替换为对您自己的 db 助手类的查询。

于 2012-06-13T15:11:10.727 回答
0

是的,您可以,您可以拥有自定义数据加载器,它可以加载您定义的对象或任何对象类型或列表。

只需查看兼容性库示例和演示中的 LoaderCustomSupport.java 的 android sdk 示例。

于 2012-06-13T14:59:51.460 回答