解决自定义ListView中滑动事件和点击的setOnItemClickListener事件冲突的问题
来源:互联网 发布:修改视图的sql语句 编辑:程序博客网 时间:2024/04/28 03:13
解决自定义ListView滑动事件和点击事件冲突的问题
一、问题描述
自定义的ListView加入下拉刷新和上拉加载更多后会出现滑动时触发了点击单个条目的setOnItemClickListener事件,导致两个事件冲突了
二、解决方案
当我们重写ListView的OnTouchEvent方法时,通常都会switch一下MotionEvent的action,检查符合一定条件是return true,比如重写ListView添加下拉刷新时出现下拉刷新时容易误点Item出发点击事件或者出发长按事件。先看看下面的代码,我忽略了非关键部分:@Override public boolean onTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN : // ... break; case MotionEvent.ACTION_MOVE : if (...) { // 下拉刷新逻辑... return true;//这里拦截了触摸事件 } break; case MotionEvent.ACTION_UP : // ... break; } return super.onTouchEvent(ev); }分析:
发现OnTouchEvent中条件出发下拉刷新逻辑后直接
return true;
而没有执行到
super.onTouchEvent(ev);
方法,在
super.onTouchEvent(ev);
方法中有可以解决ListView触摸事件和点击Item事件冲突的代码,可以防止下拉刷新时容易误点Item出发点击事件或者出发长按事件。
解决
在
return ture;
前调用
super.onTouchEvent(ev);
,代码如下:@Override public boolean onTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN : // ... break; case MotionEvent.ACTION_MOVE : if (...) { // 下拉刷新逻辑... super.onTouchEvent(ev);//调用父类方法,防止滑动时触发点击事件 return true;//这里拦截了触摸事件 } break; case MotionEvent.ACTION_UP : // ... break; } return super.onTouchEvent(ev); }
如果上面的还是无法解决问题,我们可以重写ListView的onInterceptTouchEvent方法,将所有的触摸事件都拦截由该listview处理即可,代码如下:
@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {//触摸事件由此listview处理return true;}
2 0
- 解决自定义ListView中滑动事件和点击的setOnItemClickListener事件冲突的问题
- listView中setOnItemClickListener()无响应,焦点(点击事件)冲突的解决
- 一种解决滑动事件和点击事件冲突的方法
- Android中解决listview的item点击事件和子控件点击事件的冲突
- listview setOnItemClickListener 点击事件失效的解决方法
- 解决ListView+ViewPager滑动事件冲突的问题
- 解决ListView+ViewPager滑动事件冲突的问题
- Android:完美解决listview的setonitemclicklistener 和 setontouchlistener冲突问题
- 解决Listview的item和里面控件点击事件冲突
- Android中ListView长按事件和点击事件的冲突问题
- ListView滑动item时响应滑动的条件及解决与点击事件的冲突
- ListView setOnItemClickListener无法响应点击事件解决
- ListView setOnItemClickListener无法响应点击事件解决
- ListView中添加Button后,Button的点击事件和ListView的点击事件冲突
- ListView中添加Button后,Button的点击事件和ListView的点击事件冲突
- ListView中添加Button后,Button的点击事件和ListView的点击事件冲突
- ListView中添加Button后,Button的点击事件和ListView的点击事件冲突
- listview或gridview中item的点击事件与控件点击事件冲突的解决
- C#动态调用webservice
- ExecuteReader
- linux chkconfig
- 安卓开发常用的颜色
- android 动画类型
- 解决自定义ListView中滑动事件和点击的setOnItemClickListener事件冲突的问题
- Mysql 数据库中的函数
- 从 NSURLConnection 到 NSURLSession
- iOS常用的两种延时的方法
- 几何画板怎么制作文氏图
- Python-SciPyStack安装(NumPy & SciPy)
- leetcode--Longest Common Prefix
- linux命令行汇集
- 定位