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

发布于 2017-01-21 04:50:51 字数 381 浏览 1263 评论 5

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

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

评论(5

清晨说ぺ晚安 2017-09-12 01:28:53

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

瑾兮 2017-07-24 17:22:15

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

虐人心 2017-04-04 17:10:42

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

浮生未歇 2017-04-03 23:41:14

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

偏爱自由 2017-03-09 17:32:42

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文