ListView不能触发OnItemClick的原因

2020-10-12  本文已影响0人  张龙_f239

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的。

上一篇 下一篇

猜你喜欢

热点阅读