Android 在单个列表中显示多个异步任务的结果
原始屏幕 我有一个屏幕,顶部有一个微调器,当用户从微调器中选择一个值时,我们会在下面的列表中显示该选择的项目 数据是以分页方式使用异步任务从服务器获取的,当用户滚动时,将使用异步任务从服务器获取更多数据以添加到列表中。(即获取项目1至20,当用户向下滚动时,获取项目21至40) 例如:当您选择“Bucket 1”时,列表显示“Bucket 1”中的所有项目,然后当您选择“Bucket 2”时,列表更改为显示“Bucket 2”中的所有项目。我们永远不知道每个桶里有多少东西,数字可能会有所不同 新的所需屏幕 我需要更改此屏幕,以便不再使用微调器 相反,我希望有一个列表,其中包含所有存储桶中的项目(见下图)。我想显示bucket 1中的所有项目,然后显示bucket 2中的所有项目,依此类推 注意:我可能想要也可能不想要显示bucket名称的分隔行 我的问题是,服务器一次只允许我获取一个bucket的项目,因此我必须调用从bucket 1获取项目,然后当用户滚动时,如果我从bucket 1中用完了项目,则从bucket 2获取项目,依此类推 我需要将所有项目都放在一个列表中,这样我就可以跨存储桶选择多个项目 帮助 如何编写这样的列表?该列表包含来自多个不同异步调用的数据 我想我必须从打电话开始计算所有存储桶中总共有多少项,这就是我的列表计数 我看到有一个“MergeCursor”,但这对我没有帮助,因为我没有从数据库中获取数据 我看到有一个“MergeAdapter”,它是一个包含子适配器的适配器。在我的例子中,每个bucket都有一个子适配器。我的MergeAdapter count是所有子项的总计数,然后在获取每行的视图/项时,我必须使用每个bucket的位置和大小来知道从哪个bucket获取项Android 在单个列表中显示多个异步任务的结果,android,list,datasource,Android,List,Datasource,原始屏幕 我有一个屏幕,顶部有一个微调器,当用户从微调器中选择一个值时,我们会在下面的列表中显示该选择的项目 数据是以分页方式使用异步任务从服务器获取的,当用户滚动时,将使用异步任务从服务器获取更多数据以添加到列表中。(即获取项目1至20,当用户向下滚动时,获取项目21至40) 例如:当您选择“Bucket 1”时,列表显示“Bucket 1”中的所有项目,然后当您选择“Bucket 2”时,列表更改为显示“Bucket 2”中的所有项目。我们永远不知道每个桶里有多少东西,数字可能会有所不同
如果有任何建议,我们将不胜感激。我在从服务器获取项目的异步任务中解决了这个问题。适配器向任务传递它需要数据的行。然后,任务找出bucket 1是否有这些项,如果有,则返回,如果没有所有项,则从适配器计数中删除第一个bucket的大小,并检查第二个bucket,依此类推,直到返回所有项 范例 桶1:5项(A、B、C、D、E) 桶2:3项(F、G、H) 桶3:10项(I、J、K、L、M、N、O、P、R、S) 适配器要求提供项目1-4:
- 从Bucket 1同步任务返回项目1-4
- 返回的总数=A、B、C、D
- SyncTask首先查看bucket 1是否有5个或5个以上的项目,它从bucket 1中获取第5个项目,即E
- 当SyncTask被要求提供4个项目时,它只有1个项目,而bucket 1的项目已用完。因此,SyncTask在Bucket 2中查找。调整计数以删除bucket 1中的项目数,因此新计数要求bucket 2中的1-3,返回F、G、H
- 返回的总数=E、F、G、H
- AsyncTask检查起始数字是否大于第一个存储桶中的数字,因此AsyncTask通过从存储桶1中提取总数来创建新计数
- 所以我们要找的是4-7
- 然后,AsyncTask检查起始数字是否大于第二个存储桶中的数字,因此AsyncTask通过从存储桶2中提取更新计数的总数来创建新计数
- 所以我们在寻找1-4
- Bucket 3有4个或更多项目,因此我们返回前4个项目
- 返回的总数=I,J,K,L