具有章节标题的Android适配器:性能问题

时间:2010-11-19 10:53:09

标签: android cursor adapter

我有一个自定义适配器来显示带有章节标题的项目列表。我已经看过Jeff Sharkey的SeparatedListAdapter和CommonsWare的MergeAdapter作为如何实现这一点的例子,我现在有一个解决方案,它通过为每个部分的内容提供单独的适配器来工作。

但这会产生很大的性能问题。在我的情况下,列表中可能有数千个项目,每个项目都有一个相关的日期,我想将日期作为该日期所有项目的部分标题。

因此,如果没有章节标题,我会有一个Cursor返回按日期排序的项目。很好,很容易。

对于章节标题,我目前正在这样做:

  1. 一个光标,用于选择数据集中的所有不同日期
  2. 对于每个不同的日期,使用单独的Cursor返回与该日期匹配的项目
  3. 将日期(部分标题)和每个日期项目的SimpleCursorAdapters分别放入我的自定义适配器。
  4. 这需要生成比我想要的更多的数据库查询和游标,并且在ListView出现之前有几秒钟的延迟。

    我怀疑可能有一个更简单的解决方案,其中getView做一些聪明的事情并检测连续项之间的日期何时发生变化,然后自己潜入新标题,因此只需要一个光标。任何人都可以提出这样做​​的方法吗?

2 个答案:

答案 0 :(得分:2)

我想最简单的方法是在每个getView调用内检查前一项是否有不同的日期,如果是,只需在当前视图中嵌入标题。

答案 1 :(得分:1)

您可以尝试http://code.google.com/p/android-section-list/,后面只需要一个光标(在一个对象中返回光标+部分)。然而,它无论如何都必须通过所有元素(一次)来计算结果列表+标题的大小(列表适配器需要) - 所以它可能仍然很慢。