这两天修改领导通的ListView widget,在ListView中加入Button这类的有 “点击” 事件的widget,发现原来listview的itemclick居然失效了,
后来在网上查资料终于得以解决。
 
ListView 和 其它能触发点击事件的widget无法一起正常工作的原因是加入其它widget后,ListView的itemclick事件将无法触发,被其它widget的click事件屏蔽。
 
解决办法:
在item中,包含button的item的Layout中加入属性 android:descendantFocusability= "blocksDescendants"
在buttion的属性加入android:focusable="false"
 
问题解决,两个click事件不再冲突了!
====================
 
ListView的setOnItemClickListener事件和ListView中Item中包含的子控件(比如button)的click事件共存的解决办法:
在ListView的item的xml配置文件的根节点添加属性
android:descendantFocusability="blocksDescendants"
并且,在要添加事件的子控件(如button)的属性里添加android:focusable="false"
另外,注意:有时现成的几个adapter满足不了要求,此时就需要继承自BaseAdapter。

下面我是程序中的部分代码,该布局文件时listview中的item的布局,

listview_listitem_layout.xml   代码如下:

<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="horizontal"
  android:descendantFocusability="blocksDescendants"
  style="@style/ListItem">  
    
    <TextView 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
android:visibility="gone" />
<ImageView 
 android:layout_width="45dip"
 android:layout_height="45dip"
   android:layout_gravity="center"
   android:layout_alignParentLeft="true"
 android:background="@drawable/imageview_background" 
 android:scaleType="fitXY" />   
 <Button  
  android:layout_width="@dimen/btn_attention_width"
  android:layout_height="@dimen/btn_attention_height"
  android:layout_alignParentRight="true"
  android:background="@drawable/button_selector_gradient"
  android:text="关注"
  android:focusable="false"/>
</RelativeLayout>

区分listview的item和Button的点击事件的更多相关文章

  1. android ListView中的Item有Button时候点击异常处理

    1.当ListView中有Button的时候往往会遇到很多问题,比较常见的一个问题是: 假设:在ListView中有N个Item当点击其中某个Item中的Button的时候,需要改变当前Button的 ...

  2. ListView的item中有button和checkbox,listview的点击事件无效

    ListView的item中有button和checkbox,listview的点击事件无效,解决办法: 在item布局文件中的根控件中添加属性设置: android:descendantFocusa ...

  3. listview 的onitemlongclick阿和onitemclick冲突,item中还有button的点击事件

    listview里面item有button的,button要设置 android:focusable="false"  ,listview里面如果设置了 onitemlongcli ...

  4. Android Listview中Button按钮点击事件冲突解决办法

    今天做项目时,ListView中含有了Button组件,心里一早就知道肯定会有冲突,因为以前就遇到过,并解决过,可惜当时没有记录下来. 今天在做的时候,继续被这个问题郁闷了一把,后来解决后,赶紧来记录 ...

  5. (二)AS给button添加点击事件

    三种方法给Button添加点击事件 (一)通过button的id,添加继承View.OnClickListener的监听实现 <Button android:id="@+id/btn_ ...

  6. 关于listView的item失去焦点不能点击 Item中包含Button 导致抢占焦点

    今天发现一个问题.listView的item点击以后进入到下一个页面,下个页面有个返回按钮,直接返回回去以后点击事件不能触发,滑动或者重新打开这个listView,就可以达到原来的效果.后来发现是因为 ...

  7. pyqt的多Button的点击事件的槽函数的区分发送signal的按钮。

    关键函数:QPushButton的setObjectName()/objectName() 个人注解:按功能或者区域,将按钮的点击事件绑定的不同的槽函数上. from PyQt5.QtWidgets ...

  8. UITapGestureRecognizer会屏蔽掉Button的点击事件( 转载)

    UITapGestureRecognis 前几天在做项目的时候,遇到这个一个问题,在一个视图也就是UIView上添加一个手势,然后又在这个View上添加一个UIButton,然后给按钮添加事件,运行项 ...

  9. NGUI Button 3中点击事件的触发

    NGUI事件的种类很多,比如点击.双击.拖动.滑动等等,他们处理事件的原理几乎万全一样,本文只用按钮来举例. 1.直接监听事件 把下面脚本直接绑定在按钮上,点击按钮触发的方法名必须为OnClick,当 ...

随机推荐

  1. 黑马程序员——JAVA基础之多线程的线程间通讯等

    ------- android培训.java培训.期待与您交流! ---------- 线程间通讯: 其实就是多个线程在操作同一个资源,但是动作不同. wait(); 在其他线程调用此对象的notif ...

  2. 黑马程序员——JAVA基础之多线程的安全问题

    ------- android培训.java培训.期待与您交流! ---------- 导致多线程出现问题的一个特殊的状态:就绪.具备了执行资格,但是还没有获取资源. 导致安全问题的出现的原因: 1. ...

  3. java的nio之:java的nio系列教程之SocketChannel

    Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道.可以通过以下2种方式创建SocketChannel: 打开一个SocketChannel并连接到互联网上的某台服务器. ...

  4. Oracle RAC 并发与架构

    10g RAC进程总概 一. RAC 并发 RAC 的本质是一个数据库,运行在多台计算机上的数据库,它的主要任务是数据库就是事务处理,它通过 Distributed Lock Management(D ...

  5. 胶囊碰撞体(CapsuleCollider)

    胶囊碰撞体 (Capsule Collider) 胶囊碰撞体 (Capsule Collider) 由两个半球体与一个圆柱体相连接而构成.它与胶囊 (Capsule) 基元形状相同.   一堆胶囊碰撞 ...

  6. nginx实现日志按天切割

    背景 nginx的日志文件没有rotate功能.一段时间过后,日志将越发臃肿,一个accesslog很快就突破1G,因此有必要通过脚本实现按天切割日志. 解决思路 1  重命名日志文件,如更改为acc ...

  7. 007. 自定义ListBox的item的宽高, 字体居中

    /// <summary> /// 自定义ListBox的item的宽高, 字体居中 /// </summary> /// <param name="sende ...

  8. IIS6下PHP环境的资源未找到(404)问题

    故障现象: 无法找到该页, 404错误

  9. linux服务之smtp

    实现这个协议的软件太多,有sendmail,postfix等.不像snmp,基本上是net-snmp一统天下, yum install nc nc用来取代telnet 这里我们希望让大家知道网络协议中 ...

  10. linux工具类之硬盘检测

    软raidmount /dev/md0 /opt                [root@localhost root]# cp /usr/share/doc/raidtools-1.00.3/ra ...