Android: CursorLoader, LoaderManager, SQLite

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


答案 1

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

正如Barak所提到的,可以通过扩展类来实现一个没有内容的提供程序。也就是说,大多数教程和示例代码都使用s,Android团队似乎也鼓励使用它。它也比实现自己的类复杂得多。CursorLoaderAsyncTaskLoader<Cursor>ContentProvider

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


答案 2

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

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


推荐