Android-ListView中的组件Button的OnClick事件触发时机

Android-ListView中的组件Button的OnClick事件触发时机

晚风撩人 发布于 2017-01-21 字数 493 浏览 1196 回复 5

Android开发时,ListView中的组件Button的OnClick事件必须在ListView之外的组件事件触发后才能触发?
此处ListView无OnItemClick事件,而且ListView中的Button的OnTouch事件可以实时触发,OnClick事件就被阻塞了,需要等待别的事件触发之后才能触发,十分不解,要贴个代码吗?

模拟器上的截图,黄色的按钮点击后无法触发onclick事件,但点击下方“返回”,或者“提交”按钮之后就会触发先前的点击事件。。。

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

清晨说ぺ晚安 2017-09-12 5 楼

我一般是给BUTTON设置TAG,通过判断list中的点击对象的tag和button的tag判断被触发的button从而做出动作。

瑾兮 2017-07-24 4 楼

可能问题被你复杂化了或者原因并非出在这里,ListView中的Button的OnClick事件和一般的Button的OnClick事件没有差别,就是在Button被点击之后执行绑定在Button上的监听器中的内容,跟ListView外的组件事件没有关系。

虐人心 2017-04-04 3 楼

你好,这个问题你的思路是错误的。
你应该把触发的内容写到的list的相关adapter中的getView函数里面,然后通过list的ID来判断点击是哪个。从而做出动作。

浮生未歇 2017-04-03 2 楼

【0】button的 onClick 事件并不需要外部的事件触发后才能触发,你可以看到只要你去点击 button,就可以触发 onClick 事件,但是有例外,也就是你第2个问题
【1】关于onTouch 会阻塞 onClick 事件,是因为 onTouch 的返回值,可以阻止事件的传递,详情 请点击这里

偏爱自由 2017-03-09 1 楼

这个问题我也经常遇到。。其实很简单的说。。
其实就是事件分发的时候被屏蔽了。。

只需要将item布局的Button设置android:focusable="false"
或者
在item的xml文件中的根布局中设置 android:descendantFocusability="blocksDescendants"

就可以了。。
其他控件也是同理,比如:GridView..等等