几个小时以来,我一直在互联网上搜寻答案,但似乎找不到任何人能够解决这个问题。
我有一个使用自定义适配器的 ListView 。一行看起来像这样
列表由数组填充。一切都很好。
现在,我希望 ImageView 和 ToggleButton 对点击使用react,所以我在我的适配器中实现了 OnClickListener,将项目位置放在每个 View 的标记中,然后我将它们的 onclicklistener 设置为此。
效果很好,除了现在我不能使用 onListItemClick 来启动该项目的 Activity !好的,我说,我只是让在中间保存文本的 relativelayout 使用相同的 onclicklistener。效果很好。一切都是可点击的,生活是美好的。
除了!现在,当我滚动列表时,我无法通过再次滑动来“继续”滚动。这会导致滚动停止,我必须再次猛击才能让它重新开始。似乎 onclick-thingy 会导致 fling-motion 被解释为点击或其他东西(它不会触发 onClick 中的逻辑)。
我知道只要转到我的 HTC Hero 上的电话列表就可以做到这一点,它的布局和行为正是我想要从我的应用程序中获得的。这个应用程序甚至似乎有 onItemClickListener 工作。
那么我怎样才能确保列表不断滚动,并且仍然能够单击切换按钮、列表项和 ImageView ?我整天都被困在这个问题上,这让我很头疼:(
最佳答案
我回家前又快速搜索了一下,发现了这个:
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 会导致继续滚动时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4227424/