转:ListView不能响应itemclick事件的解决方法

来源:互联网 发布:网络拓扑图怎么简单画 编辑:程序博客网 时间:2024/06/05 11:26

大家都知道listview可以根据自己的需求,重写baseadapter ,实现自己的布局及数据,但是当我们在自己的布局中加入了button或者ImageButton,还有其他比如checkbox,radiobutton等控件时,发现listview不在响应onitemclick事件,让人很悲愤啊,自己在网找了个方法,可以处理掉这个东东

发生的原因:当listview中包含button,checkbox等控件的时候,android会默认将focus给了这些控件,也就是说listview的item根本就获取不到focus,所以导致onitemclick时间不能触发。

既然我们知道了,发生的原因,那么我们就将button等控件的在xml布局文件中的属性android:focusable设置为false,就ok了,但通常不这样做,因为要一个一个地修改button太麻烦,通常可以修改这些button的父容器的descendantFocusability属性为false,是否很方便呢,这样即可以触发onitemclick事件,同时我们在baseadapter实现类中也可以处理button等控件的事件,两不相误。


参考:http://blog.csdn.net/xanxus46/article/details/8348931


android:descendantFocusability="blocksDescendants"

Google给出的官方解释为:Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.(这个属性定义了——当系统需要找一个View去获取焦点的时候,系统应该如何处理ViewGroup和其子节点(或“子控件”)之间的关系。)

可以选择三者之一: afterDescendants(在子节点之后), beforeDescendants(在子节点之前), blocksDescendants(阻塞子节点)

0 0
原创粉丝点击