当ListView设置了OnItemClickListener, Item项里的View设置了OnClickListener时,
经常遇到某一个Listener失效的现象.
根本原因是焦点的问题,
当item项目中某个View能够获取焦点时, 根据View焦点传递的规则会优先接受点击事件,
如此就会导致ListView的OnItemClickListener失效.
因为能够自动获取焦点的View有优先获取点击事件的权利,
OnItemClickListener是在Item的父节点, 所以它是最后一个处理点击事件的(虽然最先接收,
但是先分发给子View, 子View处理完后, 最后自己处理). 如果子View处理并消化了点击事件,
那么OnItemClickListener久失效了.
解决的方法:
1 你可以放弃OnItemClickListener, 只是用OnClickListener.
2 检查你的Item里, 时候有focusable=true 和 focusableInTouchMode=true的View.
如果有, 把他们都设置成false.
来源:oschina
链接:https://my.oschina.net/u/1393188/blog/518080