【问题标题】:Listview onItemClick sometimes not respondingListview onItemClick 有时没有响应
【发布时间】:2011-03-06 18:46:13
【问题描述】:

我有一个列表视图和一个自定义适配器。

在我的列表视图中我设置了这个:

lv.setOnItemClickListener(...)

一切正常。但是当我开始滚动时它不会。当我缓慢向下滚动时,它是稳定的(调用 onItemClick),但是当我更快地向下滚动或快速向下和向上滚动几次时,选择一个项目不会触发事件。但是,如果我稍等片刻或继续单击某个项目或慢慢滚动到顶部,它就会随机运行。

有时当我单击一个项目时,它会显示黄色背景(并且未调用 onItemClick)。 有时即使在我停止触摸后橙色背景仍然存在(并且未调用 onItemClick)。 有时背景根本不会改变(并且 onItemClick 没有被调用)。 有时它会起作用。

列表的项目由几个 textView / imageview / linearlayout 组成(我为每个 focusable=false 设置它什么都没有改变)用视图持有者动态膨胀。

是否有人知道出了什么问题或知道如何调试它?

(源码太大,这里不能贴,如果你愿意,我可以把源码或者apk发给你)

【问题讨论】:

  • 您能提供一些代码吗?如果无法看到产生问题的代码,就很难诊断问题。
  • 您是否出于任何原因(可选择/可点击/可聚焦/启用)调整视图的交互参数?你不应该这样做,这样做会导致非常奇怪的结果。如果您无法在此处发布 Activity 代码,请将其放入 Pastebin 之类的东西中,或者将代码放入 Github 之类的公共存储库中,以便我们对其进行分析。干杯。
  • 对于快速滚动问题,您可能已经到达底部/顶部并且您使用的是 Android 2.2。它在Scroller 类中有一个错误,它不会“停止”滚动,因此您需要等待它“消耗”它的动力或单击一次以“停止”它(它不是可见的东西),之前能够点击内容。它也发生在ScrollViews
  • 这里是代码主要活动代码pastebin.com/pZ1qbyRg
  • 嗨@jpprade,您找到解决方案了吗? (很久以前,我知道)。我发现我的自定义 ListView 只长按了我的第二个 TextView,但不是我的第一个(不知道为什么),这与我从下面的答案中添加的任何解决方案无关。对第二个非常有效,但对第一个永远无效,并且它们应该在ListView 中的单个项目位置中,所以如何让它全部长按是令人费解的。用户不会知道只点击第二个。 ://

标签: android listview


【解决方案1】:

将此行添加到列表视图自定义行 xml 文件的父布局 android:descendantFocusability="blocksDescendants"

还有 在您的充气机(自定义行视图)布局的文本视图中添加:

android:focusable="假" android:focusableInTouchMode="false"

【讨论】:

    【解决方案2】:

    我遇到了类似的问题。我的 ListView 项目由一个包含 ImageView 和 TextView 的 LinearLayout 组成。除了以下我的布局:

    android:descendantFocusability="blocksDescendants"
    

    以及我的 TextView 和 ImageView 的以下内容,如另一个答案中所建议的:

    android:focusable="false"
    android:focusableInTouchMode="false"
    

    我也将此添加到我的 ImageView 中:

    android:clickable="false"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-06
      • 2011-01-23
      • 1970-01-01
      • 2021-12-13
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多