行中带有可点击项目的 Android ListView 会导致继续滚动出现问题

Posted

技术标签:

【中文标题】行中带有可点击项目的 Android ListView 会导致继续滚动出现问题【英文标题】:Android ListView with clickable items in it's rows causes problems continuing scrolling 【发布时间】:2011-05-12 18:17:50 【问题描述】:

我已经在互联网上搜寻了几个小时的答案,但我似乎找不到任何能够解决这个问题的人。

我有一个使用自定义适配器的列表视图。一行是这样的

列表由一个数组填充。一切都很好。

现在,我希望 ImageView 和 ToggleButton 对点击做出反应,所以我在我的适配器中实现 OnClickListener,将项目位置放在每个视图的标签中,然后我将它们的 onclicklistener 设置为此。

效果很好,除了现在我不能使用 onListItemClick 来启动项目的活动!好的,我说,我只是在中间放置文本的 relativelayout 使用相同的 onclicklistener。效果很好。一切都是可点击的,生活是美好的。

除了!现在,当我滚动列表时,我无法通过再次投掷来“继续”滚动。这会导致滚动停止,我必须再次甩动才能让它再次运行。似乎 onclick-thingy 导致投掷运动被解释为点击或其他东西(它不会触发 onClick 中的逻辑)。

我知道这可以通过转到我的 HTC Hero 上的电话列表来实现,它具有我想要的应用程序的布局和行为。这个应用程序甚至似乎有 onItemClickListener 工作。

那么我怎样才能确保列表保持滚动,并且仍然能够单击切换按钮、listitem 和 imageview?我整天都被困在这个问题上,这让我很头疼:(

【问题讨论】:

【参考方案1】:

在我回家之前又快速搜索了一下,我发现了这个:

How to fire onListItemClick in Listactivity with buttons in list?

CodeFusionMobile 提到将列表布局的android:descendantFocusability 属性设置为"blocksDescendants",所以我尝试这样做。现在一切都按预期工作。滚动作品,onListitemClicked作品,点击ToggleButton作品,点击ImageView作品。

只是为了说清楚......在父RelativeLayout,就在row.xml的顶部,我添加了

android:descendantFocusability="blocksDescendants"

【讨论】:

以上是关于行中带有可点击项目的 Android ListView 会导致继续滚动出现问题的主要内容,如果未能解决你的问题,请参考以下文章

在 xib 中带有可选 UIImageView 的自定义 UITableViewCell

react-native 中带有可折叠部分标题的部分列表

Laravel 5中带有可选参数的url中的两个斜杠

ASP.NET Web API 中带有可选参数的属性路由

Android项目中带有Gradle插件的模块

ea中带maven的项目怎么发布