从onLoadFinished
加载将无任何问题。我在一个宠物项目中做了类似的事情。我从我自己的ContentProvider加载数据,然后从手机的Contact ContentProvider加载联系人数据。我的数据库中的每个条目都可以引用多个联系人,所以我必须先加载我的项目,然后才能知道要加载的联系信息。当我第一次收到onLoadFinished
中的项目数据时,我将init/restart LoaderManager调用链接起来。它工作得很好,我之后使用联系人数据作为列表。当然,我没有使用这种方法将数据加载到现有列表视图项目的视图中。我在我的物品的详细视图中使用了自己列表中的数据。它应该仍然可以处理你想要做的事情,但是它可能会混乱地将数据附加到视图和内容,特别是因为视图“生命周期”不在你的控制范围之内。
一个更好的方法IMO可能会编写一个自定义的CursorAdapter,它可以在创建视图时使用AsyncTask或AsyncQueryHandler来获取额外的数据。确保在列表滚动时缓存数据供随后使用。第二种方法具有独立于外部/辅助装载机的优点。它封装了显示所需数据所需的所有逻辑,其中包括加载缺少的部分。它保持视图数据和显示逻辑的一致性,安全地隐藏在可重用模块内。
为什么首先需要2次调用来获取数据?启动第二个加载程序的触发器是什么?它是否会显示更多数据的某种列表项单击? – Sean 2013-02-26 19:12:25
我可以看到,您只想为列表视图中的可见项目执行此操作。但是,如果您在初始列表数据之后立即加载所有项目的附加数据,那么只需在同一个加载程序中一步完成。 – 2013-02-26 19:12:52
@Sean事情是,我第一次负载收集通话记录,并在第二我收集每个电话号码的其他信息,如地点 – Azat 2013-02-26 19:35:09