解决ListView setOnItemLongClickListener 长按无响应(嵌套GridView)

本文介绍了在Android开发中遇到的一个问题:ListView的item包含一个GridView,设置setOnItemLongClickListener后,长按GridView区域无响应。原因是事件被GridView的onItemClick事件消耗。解决方法是自定义一个ExpendableGridView,重写OnTouchEvent,当检测到长按时调用super.performLongClick()。
摘要由CSDN通过智能技术生成

博客源址:http://blog.csdn.net/u013844789/article/details/50379323

问题背景介绍:

ListView item中包含GridView,现要为ListView添加setOnItemLongClickListener事件,添加完成后测试发现点击GridView所在区域无响应。

问题原因分析:

事件分发基础知识:Android事件分发机制为自上而下分发,即Activity–>ViewGroup–>View。其中事件分发主要由三个方法进行控制,onTouchEvent、dispatchTouchEvent、onInterceptTouchEvent(ViewGroup独有),控制方法为返回相应的返回值。当前情景事件分发流程:用户点击GridView区域后,事件从Activity传到ListView,再从ListView传到GridView,然后调用GridView的onTouchEvent事件。原因分析:当事件传递到GridView时,由于item添加了onItemClickListener,所以事件被消耗,没有回调到ListView OnItemLongClick方法。

解决办法:

自定义GridView,并重写OnTouchEvent方法,在onTouchEvent方法中判断用户当前操作是否为长按,如果为长按则调用super.performLongClick()方法

以下是代码实现

import java.util.Timer;
import java.util.TimerTask;
import android.content.Context;
import andro

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值