我有三个数据库表:Stacks
,Dates
和Z
,其中Stacks
是我的主表,Dates
和{{1}是'子'表,带有外键列,链接到Z
的主键列。 (请原谅我的术语,如果需要,我可以提供架构。)
此后我将仅提及Stacks
和Stacks
,以减少我的解释的复杂性,但如果相关,Dates
的使用方式与Z
完全相同Dates
。
在一个典型的ListFragment
中,我使用ListView
reference page中讨论的实现构建了一个LoaderManager
- 创建一个空适配器,然后交换Cursor
当我的查询完成时(在onCreateLoader()
中查询并交换onLoadFinished()
)。
我查询Stacks
表(使用URI,因为我的数据库是使用Content Provider
library实现的Simple Content Provider
前面的,因为我想要的值绑定到适配器中getView()
中的每个列表项,主要在这里找到,这很好。
但是,我也希望绑定Dates
表中的一些值,但我不确定如何执行此操作。在使用加载器之前,我将在适配器中创建一个新的SQLiteOpenHelper
,并直接在getView()方法中访问辅助项,即从Cursor
表返回Dates
。这很慢,我很确定后见之明这是一个坏主意:P
是否有标准的方法来实现这一点,使用多个数据源填充列表视图(理想情况下使用加载程序)?
编辑:
Dates
表可能有多条记录(具有不同的值)
对于每个关联的Stack
。ListView
中的内容无关的其他信息。答案 0 :(得分:1)
如果你需要每行执行此操作,基本上有两种选择:
ContentProvider
中预先做好所有事情,例如使用子查询或更复杂的查询。getView()
的{{1}}中执行查询异步。这类似于加载远程图像的方式。这两种方法都有其优点。 #1可能更简单,但如果您的列表中有很多项目可能不够快。 #2很快,因为您只会查询相关日期,但滚动时取消(或避免制作)查询可能会很痛苦。
当您必须进行未知数量的装载时,装载机没有意义。