我有一个自定义适配器来显示带有章节标题的项目列表。我已经看过Jeff Sharkey的SeparatedListAdapter和CommonsWare的MergeAdapter作为如何实现这一点的例子,我现在有一个解决方案,它通过为每个部分的内容提供单独的适配器来工作。
但这会产生很大的性能问题。在我的情况下,列表中可能有数千个项目,每个项目都有一个相关的日期,我想将日期作为该日期所有项目的部分标题。
因此,如果没有章节标题,我会有一个Cursor返回按日期排序的项目。很好,很容易。
对于章节标题,我目前正在这样做:
这需要生成比我想要的更多的数据库查询和游标,并且在ListView出现之前有几秒钟的延迟。
我怀疑可能有一个更简单的解决方案,其中getView
做一些聪明的事情并检测连续项之间的日期何时发生变化,然后自己潜入新标题,因此只需要一个光标。任何人都可以提出这样做的方法吗?
答案 0 :(得分:2)
我想最简单的方法是在每个getView
调用内检查前一项是否有不同的日期,如果是,只需在当前视图中嵌入标题。
答案 1 :(得分:1)
您可以尝试http://code.google.com/p/android-section-list/,后面只需要一个光标(在一个对象中返回光标+部分)。然而,它无论如何都必须通过所有元素(一次)来计算结果列表+标题的大小(列表适配器需要) - 所以它可能仍然很慢。