我试图更好地理解 ListView 的内部功能,因为它与选择一个或多个项目有关——实际上,我什至很难理解到这一点,这真是令人惊讶。
默认情况下,定期单击 ListView 项会将该项的“已检查”状态设置为 true。如何覆盖此行为以使此选择不会发生?
更根本的是,这里的底层 ListView 机制是什么?行视图的默认 onClick 是然后调用 ListView 的 onItemClick/LongClick 处理程序,或者此单击处理如何排序?
我确实想允许多个选择的choiceMode,但我只想在ItemLongClick 上选择它。覆盖 onItemClick 不会改变这种行为,并且在适配器 getView() 函数中覆盖行视图的 onClick 处理程序似乎可以防止 ListView onItemClick 和 onItemLongClick 发生。
以下是有关我的应用程序的更详细上下文
我的目标是让我的 ListActivity 显示一个 ListView,其功能如下:
- 单击项目执行非选择操作(展开行以显示更多信息)
- 长按一个项目将其选中。通过突出显示行的背景来指示选择项目(如在 Gmail 应用程序中)
- 您可以选择多个项目
我的应用结构是:
- Activity 是 ListActivity 的扩展
- Adapter 是 ArrayAdapter<> 的扩展
- ListView 行布局是完全自定义的布局(不是任何类型的内置 ListView 行布局)
我对 ListView 的内置功能的理解使我达到了现在的地步
- 将choiceMode设置为multipleChoice
- 使用 ListView 'checked' 功能进行和跟踪选择
- 使用自定义选择器作为“activatedBackgroundIndicator”来显示突出显示(此处为示例)