文档章节

Android 开发中踩过的坑之十二: ListView中的焦点抢夺

r
 revfycd
发布于 2015/10/16 17:09
字数 256
阅读 543
收藏 5

当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. 




© 著作权归作者所有

共有 人打赏支持
r
粉丝 10
博文 16
码字总数 6292
作品 0
海淀
加载中

评论(2)

zhangkehu
zhangkehu
焦点问题……我觉得说的很到位……
zhangkehu
zhangkehu
最近遇到过……不知道原因……学一下……有空验证一下
listview无法触发点击事件的问题

如果一个ListView item中,包含了其它可以出发点击事件的widget,例如button , 会发生ListView 无法触发 OnItemClickListener 中的onItemClick点击事件,原因是因为button抢夺了listview 的焦...

AlexZhuang
2012/04/24
0
1
Android ListView使用BaseAdapter与ListView的优化

Adapter在Android应用程序中起着非常重要的作用,应用也非常广泛,它可看作是数据源和UI组件之间的桥梁,其中Adapter、数据和UI之间的关系,可以用下图表示: BaseAdapter就Android应用程序中...

风清扬-深圳
2015/11/18
0
0
ListView使用BaseAdapter与ListView的优化

在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作。也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点。...

蜗牛TT
2012/06/12
0
1
Android listview与adapter用法

一个ListView通常有两个职责。 (1)将数据填充到布局。 (2)处理用户的选择点击等操作。 第一点很好理解,ListView就是实现这个功能的。第二点也不难做到,在后面的学习中读者会发现,这非...

OScoder2
2014/03/04
0
0
listview与adapter用法

一个ListView通常有两个职责: (1)将数据填充到布局。 (2)处理用户的选择点击等操作。 第一点很好理解,ListView就是实现这个功能的。第二点也不难做到,在后面的学习中读者会发现,这非...

ARESXIONG
2015/11/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0
搞定Northwind示例数据库,无论哪个版本的SQLServer都受用

Northwind数据库 从这里可以找到突破口: http://social.msdn.microsoft.com/Forums/zh-CN/Vsexpressvb/thread/8490a1c6-9018-40c9-aafb-df9f79d29cde 下面是MSDN: http://msdn2.microsoft......

QQZZFT
昨天
1
0
mysql主从同步,安装配置操作

准备 两台mysql服务,我这里准备了如下: 主库:192.168.176.128 从库:192.168.176.131 如何在Linux上安装mysql服务,请看https://blog.csdn.net/qq_18860653/article/details/80250499 操作...

小致dad
昨天
4
0
一个手机装天下,走遍中国都不怕!

导读 “1200元(人民币,下同),微信支付,可以,你扫我。”来自西非马里共和国的展商Albert拿着手机,和一位买走他手鼓的中国游客用简单的汉语交流着。 近日,“第十四届中俄蒙经贸洽谈暨商品...

问题终结者
昨天
3
0
Redis的“死键”问题

大规模的数据库存储系统中,数据的生命周期管理是很有必要的;从业务角度发现过期数据,数据归档和数据碎片整理等。以MySQL为例,1个运行很久的TB级MySQL实例中,极有可能数百GB的数据,对业...

IT--小哥
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部