美文网首页
ListView不能触发OnItemClick的原因

ListView不能触发OnItemClick的原因

作者: 张龙_f239 | 来源:发表于2020-10-12 19:05 被阅读0次

ListView中的item布局中如果有button,则ListView的OnItemClickListener不会触发。如果设置button的focusable为false可解决。

原因分析(基于android-27源码)
OnItemClickListener调用流程:
AbsListView.onTouchEvent方法处理触摸事件,当收到UP事件时调用onTouchUp方法,
然后调用AbsListView.PerformClick.run() ->performItemClick() -> super.performItemClick() -> mOnItemClickListener.onItemClick
关键在onTouchUp方法中存在条件判断:

if (inList && !child.hasExplicitFocusable()) {

即需要满足item及其子View不是focusable的。

相关文章

网友评论

      本文标题:ListView不能触发OnItemClick的原因

      本文链接:https://www.haomeiwen.com/subject/kheppktx.html