我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法

原创 2015年07月07日 17:31:29

 

开发中常常需要自己定义Listview,去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。

如果你的自定义ListViewItem中有Button、ImageButton或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus。所以常常当点击item时变化的是子控件,item本身的点击没有响应。

这时候就可以使用descendantFocusability属性来解决,他可以设置一个控件如何处理触摸事件,

该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

属性的值有三种:

android:descendantFocusability="blocksDescendants" //viewgroup会覆盖子类控件而直接获得焦点android:focusable="false"
android:descendantFocusability="beforeDescendants" //viewgroup会优先其子类控件而获取到焦点
android:descendantFocusability="afterDescendants"   //viewgroup只有当其子类控件不需要获取焦点时才获取焦点

因此我们可以通过对Item Layout的根控件设置其android:descendantFocusability=”blocksDescendants”来解决,这样Item Layout就屏蔽了所有子控件获取Focus的权限,如此就可以顺利的响应onItemClickListener中的onItenClick()方法了。



 


                            ====================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址http://blog.csdn.net/ouyang_peng

====================================================================================

 


版权声明:本文为【欧阳鹏】原创文章,欢迎转载,转载请注明出处! 【http://blog.csdn.net/ouyang_peng】

相关文章推荐

Android 中listview嵌套listview,外面listview的item点击事件失效

在外层ListView的Item的Xml文件的最外部加上这句话: android:descendantFocusability="blocksDescendants" 解释下这句话: AP...

安卓ListView中嵌套ListView导致外层ListView的ItemOnclick方法无法响应的解决办法

今天遇到一个问题,我在一个ListView中嵌套了另一个ListView,内层ListView通过点击外层ListView中的一个Item中的按钮显示出来,可是显示出来之后,问题出现了。 外层List...

Android ListView嵌套ListView,正确触发子ListView中的被点击项

必须使用parent获取被点击的子ListView中的项 package cn.example.doublelistviewdemo; import java.util.List; ...
  • zhanzkw
  • zhanzkw
  • 2015年01月17日 09:57
  • 1546

android 往dialog中加入listview,并实现listview中item的点击事件

LinearLayout linearLayoutMain = new LinearLayout(this);//自定义一个布局文件 linearLayoutMain.setLayoutParam...
  • jdsjlzx
  • jdsjlzx
  • 2013年12月23日 22:07
  • 24709

ListView嵌套GridView时遇到的一些坑

最近在做课程设计的时候用到了ListView列表来显示数据,虽然谷歌已经推出RecyclerView,并且已经逐步取代了ListView,可是无奈我最后还是选择了ListView。课程设计的需求是用L...

Android-ListView中嵌套(ListView)控件时item的点击事件不起作用的问题

解决:1、在主listview布局文件中的listview中添加属性 android:focusable="false"               2、在子listview中最顶上的布局文件添加属...

转屏幕时,EditText的setText()方法无效

背景:当转屏幕时,activity的页面中封装一个成员变量a,每次转屏幕时,自加一,在onSaveInstanceState()方法中实现逻辑代码,并在onCreate()方法中用EditText控件...

Android EditText的属性和方法介绍使用及值得注意的点

一、EditView属性详细介绍: 属性名称 描述 android:utoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。 可选值...

Listview点击事件失效问题解决以及每个Item 子控件获取focus

最近在写一个开源的播放器,碰到了一问题,就是listview在自定义item的内容之后点击出现无效,后来才发现原来是因为当item里面包含了子控件,例如TextView、Button等之后,子控件会优...
  • lansus
  • lansus
  • 2015年09月06日 09:23
  • 1788

Android ListView:实现item内部控件的点击事件

在使用ListView的时候,我们通常会使用到其item的点击事件。而有些时候我们可能会用到item内部控件的点击操作,比如在item内部有个Button,当点击该Button时,删除所在的item。...
  • JZhowe
  • JZhowe
  • 2017年01月28日 20:32
  • 7221
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法
举报原因:
原因补充:

(最多只允许输入30个字)