Android ListView不响应OnItemClickListener解决办法
来源:互联网 发布:淘宝美工专业术语 编辑:程序博客网 时间:2024/06/06 00:55
有时候,当ListView中的每一个item是自定义的View时,有可能会导致ListView的OnItemClickListener的listener无法调用,请看如下情况:
如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而 ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将ListView中Item中包含的所有控件的 focusable属性设置为false,这样的话ListView的Item自动获得了Focus的权限,也就可以被选中了。
我们可以通过对Item Layout的根控件设置其android:descendantFocusability="blocksDescendants"即可,这样Item Layout就屏蔽了所有子控件获取Focus的权限,不需要针对Item Layout中的每一个控件重新设置focusable属性了,如此就可以顺利的响应onItemClickListener中的onItemClick()方法了。
总结:
原因:
ListView中的Item内部的View获得了焦点,如Button, Checkbox等。
解决办法:
不要让ListView中的Item内部的View获得焦点就OK了,这样做:android:descendantFocusability="blocksDescendants"
public static final int descendantFocusability
Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.
ConstantValueDescriptionbeforeDescendants0The ViewGroup will get focus before any of its descendants.afterDescendants1The ViewGroup will get focus only if none of its descendants want it.blocksDescendants2The ViewGroup will block its descendants from receiving focus.
注意:
还有一种情况也会导致OnItemClickListener或OnItemLongClickListener回调不会执行,那就是ListView的child设置了onClickListener或onLongClickListener。我们可以通过源代码看出,在你调用setOnClickListener()方法后,它会调用setClickable(true),在onTouchEvent里面的实现如下:
if (((viewFlags & CLICKABLE) == CLICKABLE || (viewFlags & LONG_CLICKABLE) == LONG_CLICKABLE)) { // .... return true;}
- Android ListView不响应OnItemClickListener解决办法
- Android ListView不响应OnItemClickListener解决办法
- Android ListView不响应OnItemClickListener解决办法
- Android ListView不响应OnItemClickListener解决办法
- Android ListView不响应OnItemClickListener解决办法
- ListView不响应OnItemClickListener解决办法
- Android ListView OnItemClickListener事件不执行的解决办法
- ListView 不响应OnItemClickListener 的解决方案
- ListView 、GridView的OnItemClickListener无响应解决办法总结
- ListView 中使用Button中不响应OnItemClickListener事件
- 关于ListView、GridView的OnItemClickListener不响应解决
- android 自定义listview无法响应点击事件OnItemClickListener的原因
- android 自定义listview无法响应点击事件OnItemClickListener的原因
- Android中自定义ListView无法响应OnItemClickListener中的onItemClick方
- android 自定义listview无法响应点击事件OnItemClickListener
- android中点击ListView的OnItemClickListener事件没有响应解决
- android 自定义listview无法响应点击事件OnItemClickListener
- android 自定义listview无法响应点击事件OnItemClickListener
- dede后台登陆无法显示验证码
- phpmyadmin出现的在根目录下创建config文件错误的解决方法
- VS2010用MFC显示系统当前时间
- Android ListView与CheckBox
- Dialog实现Spinner下拉列表效果
- Android ListView不响应OnItemClickListener解决办法
- BZOJ 3052 WC2013 糖果公园 带修改树上莫队
- 根据点击头像的手势获取自定义Cell 的属性, UITableViewCell, 头像, iOS
- 14周(二维数组元素*3输出)
- 提高写代码的能力(转载)
- Linux负载均衡软件LVS之二(安装篇)
- 颜色空间
- Could not find default endpoint element that references contract 'wcfXXXXXXXXXXX' in the ServiceMode
- jsp自定义标签开发