gpt4 book ai didi

android - 覆盖 Android ListView onItemClick 导致项目被选中(选中)

转载 作者:太空宇宙 更新时间:2023-11-03 10:48:10 24 4
gpt4 key购买 nike

我正在尝试更好地理解 ListView 的内部功能,因为它与选择一个或多个项目有关 - 实际上,我的理解竟然如此困难,这真是令人惊讶。

默认情况下,对 ListView 项目的常规点击会将该项目的“选中”状态设置为 true。 如何覆盖此行为以使此选择不会发生?

更重要的是,这里的 ListView 机制是什么?行 View 的默认 onClick 是否会调用 ListView 的 onItemClick/LongClick 处理程序,或者此点击处理如何排序?

我确实想要允许 multipleChoice 的选择模式,但我只想在 ItemLongClick 上选择它。 重写 onItemClick 不会改变此行为,并且在适配器 getView() 函数中重写行 View 的 onClick 处理程序似乎可以防止 ListView onItemClick 和 onItemLongClick 发生。

下面是我申请的更详细的上下文


我的目标是让我的 ListActivity 显示一个 ListView,其功能如下:

  • 点击一项执行非选择操作(展开行以显示更多信息)
  • 长按一个项目将其选中。通过突出显示行的背景来指示选择项目(如在 Gmail 应用程序中)
  • 您可以选择多个项目

我的应用程序结构是:

  • Activity 是 ListActivity 的扩展
  • Adapter 是 ArrayAdapter 的扩展<>
  • ListView 行布局是完全自定义的布局(不是任何类型的内置 ListView 行布局)

我对 ListView 内置功能的理解使我达到了现在的水平

  • 将 choiceMode 设置为 multipleChoice
  • 使用 ListView 的“选中”功能进行选择并进行跟踪
  • 使用自定义选择器作为“activatedBackgroundIndicator”来显示突出显示 ( example here )

最佳答案

保留一个 ArrayList 以维护 ListView 项的选定位置。选择 ListView 项目时,检查该 ArrayList 项目位置是否在 ArrayList 中。如果项目不在 ArrayList 中,则将项目的状态更改为选中,否则将状态更改为未选中,并从 ArrayList 中删除位置对象。这对我有用。

关于android - 覆盖 Android ListView onItemClick 导致项目被选中(选中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18837499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com