【问题标题】:Show / Hide Listview SectionIndex on demand按需显示/隐藏 Listview SectionIndex
【发布时间】:2014-01-12 11:07:55
【问题描述】:

我实现了一个列表视图,它实现了 SectionIndexer ... 到目前为止一切都很好。

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

所以,当列表以第二种方式排序时,我想隐藏之前生成的 SectionIndex。

我就是做不到。

我试过了,重写了大部分方法, 我在构造函数中进行了分离尝试(清楚为什么它不起作用,它不会被第二次调用) 我什至尝试实现第二个列表适配器,只是使用不同的?即使在这种情况下,也会显示 SEctionIndex!这个我真的看不懂。

如果有人知道发生了什么,那就太好了:)

非常感谢,迈克

【问题讨论】:

    标签: android listview indexing hide


    【解决方案1】:

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

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

    在此处返回您的查询。

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

    【讨论】:

    • 我给你赏金,你是对的,但也请在下面查看我的答案,我已经检查了我的代码并将其发布在这里..你还需要做一些额外的事情,我会建议,只需在下面复制我的帖子,编辑您的帖子,然后在此处添加 :=) 完整的解决方案。所以其他人更容易解决问题:)
    • 其实我把它添加到你的帖子...“有一个编辑按钮”,在你的帖子下面,我用它直接将代码发布到你的帖子中,好像有人删除了它:(
    【解决方案2】:

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

    在为适配器填充这些新集合之后

    1)你可以通知这个适配器。

    2)你可以再次填充set adapter。

    【讨论】:

    • 对不起,但这会阻止部分索引隐藏或消失:(
    • 它不应该 ..u 必须管理要填写适配器的集合
    【解决方案3】:

    如果仍然显示的 SectionIndexer 是指部分覆盖,您可以通过调用 setFastScrollEnabled(false) 之前切换到不实现 SectionIndexer 的其他 listadapter 来实现此目的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-13
      • 2018-07-31
      • 1970-01-01
      • 2019-08-23
      • 2010-11-26
      • 1970-01-01
      • 2015-02-15
      • 2012-10-12
      相关资源
      最近更新 更多