按需显示/隐藏Listview SectionIndex

时间:2011-07-24 15:57:01

标签: android listview indexing hide

我实现了一个实现SectionIndexer的listview ... 到目前为止一切都很好。

通常情况下,项目按名称排序,但我也提供了以不同方式对列表进行排序的选项 - 距离(从用户到对象)。

因此,当列表按第二种方式排序时,我想隐藏先前生成的SectionIndex。

我无法这样做。

我试过,重写大部分方法, 我在构造函数中尝试了一个分离(明确为什么它不起作用,它不会被第二次调用) 我甚至尝试过实现第二个listadapter,只是使用另一个?即使在这种情况下,也会显示SEctionIndex!我真的不明白这个。

如果有人知道发生了什么,那真的很棒。)

非常感谢,迈克

3 个答案:

答案 0 :(得分:2)

您的观察结果是正确的。让我先告诉你为什么构造函数永远不会被第二次调用。 SectionIndexer是一种特殊的类型。它们仅为特定数据集创建一次索引,并在该适配器上重用它们。我遇到的更大问题是当适配器的基础数据发生变化时,sectionIndexer仍然保持不变。

检查我的Question和那里的答案。

回到此处查询。

如果在选择第二个选项后更改方向,您会发现构造函数将被调用,您将能够再次重新填充sectionIndex。所以基本上你需要再次调用onSizeChanged并重新填充sectionIndex。

答案 1 :(得分:0)

当您以不同方式缩短列表时,您有两个选项可以再次加载。

填写适配器的新集合

之后

1)您可以通知此适配器。

2)您可以再次填充设置适配器。

答案 2 :(得分:0)

如果仍然显示的SectionIndexer表示部分覆盖,则可以通过调用setFastScrollEnabled(false)来切换到未实现SectionIndexer的其他listadapter来实现此目的。