解决ListView当中还有ListView onItemClick点击事件问题
来源:互联网 发布:java获取ad域用户信息 编辑:程序博客网 时间:2024/06/06 02:25
很久没有写帖子了 一直挺忙
但是这个帖子 惦记好久了 应该记录一下
一张图描述 使用场景
如图所示 我外层是一个 可上拉刷新 下拉加载更多的的控件ListView 里面是一个 可动态分配高度的ListView 蓝色部分
我再外层设置OnItemClick的时候 只有订单日期那一条可以响应 事件
我想要整个Item除了按钮 都可以进行响应 那么需要把里面ListView的事件截获 屏蔽掉 因为里面控件 按钮等优先级比较高 (不理解可以稍微百度一下)
那么如何屏蔽掉里面ListView 的响应机制呢? 上代码
public class NBDispatchListView extends NBListView { public NBDispatchListView(Context context, AttributeSet attrs) { super(context, attrs); } public NBDispatchListView(Context context) { super(context); } public NBDispatchListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } @Override public boolean onTouchEvent(MotionEvent ev) { return super.onTouchEvent(ev); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return super.onInterceptTouchEvent(ev); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { return false; }}这是我基于 可在ScroolView当中使用的ListView创建的一个 listView
最关键的在于
1)public boolean dispatchTouchEvent(MotionEvent ev) 这个方法用来分发TouchEvent
2)public boolean onInterceptTouchEvent(MotionEvent ev) 这个方法用来拦截TouchEvent
3)public boolean onTouchEvent(MotionEvent ev) 这个方法用来处理TouchEvent
这三个方法当你拦截不好用的时候记得修改 分发方法
当TouchEvent发生时,首先Activity将TouchEvent传递给最顶层的View, TouchEvent最先到达最顶层 view 的 dispatchTouchEvent ,然后由
dispatchTouchEvent 方法进行分发,
如果dispatchTouchEvent返回true ,则交给这个view的onTouchEvent处理,如果dispatchTouchEvent返回 false ,则交给这个 view 的
interceptTouchEvent 方法来决定是否要拦截这个事件,
如果 interceptTouchEvent 返回 true ,也就是拦截掉了,则交给它的 onTouchEvent 来处理,如果 interceptTouchEvent 返回 false ,那么就传递给子 view ,由子 view 的 dispatchTouchEvent 再来开始这个事件的分发。如果事件传递到某一层的子 view 的 onTouchEvent 上了,这个方法返回了 false ,那么这个事件会从这个 view 往上传递,都是 onTouchEvent 来接收。而如果传递到最上面的 onTouchEvent 也返回 false 的话,这个事件就会“消失”,而且接收不到下一次事件。
- 解决ListView当中还有ListView onItemClick点击事件问题
- 解决listview onitemclick 点击无效问题
- listview 的onitemlongclick阿和onitemclick冲突,item中还有button的点击事件
- listview 的onitemlongclick阿和onitemclick冲突,item中还有button的点击事件
- android中ListView控件&&onItemClick点击事件
- android中ListView控件&&onItemClick点击事件
- android中ListView控件&&onItemClick点击事件
- android中ListView控件&&onItemClick点击事件
- listview onItemClick事件冲突
- RecyclerView嵌套ListView解决点击事件问题
- listview的onitemclick事件与adapter中的点击事件冲突
- android中为listview同时设置长按项onItemLongClick和点击事件onItemClick出现的问题
- CheckBox影响ListView的OnItemClick点击事件的解决方法
- 关于listview中onItemClick点击事件失效的解决方法
- listview onitemclick事件失效BUG
- 在ListView中的Text添加spannableString 点击事件与ListView的OnItemClick事件冲突的解决办法
- 【Android问题集】ListView不响应onItemClick事件
- Android ListView item 点击事件失效问题的解决
- U盘安装centos 7 提示 “Warning: /dev/root does not exist, could not boot” 解决办法
- java设计模式进阶_dao
- Pyqt5系列(二 )-第一个PyQt程序
- lighthouse3d的GLSL教程
- js对象写法
- 解决ListView当中还有ListView onItemClick点击事件问题
- UITableView优化技巧3
- [完]PHP 格式化显示时间 date() 函数
- Qt之QDateTimeEdit
- 结构体大小
- 触摸事件分发机制-viewGroup
- JavaSE学习_01_if_switch_while
- OPC基本知识介绍——什么是OPC
- 怎么在谷歌浏览器中安装.crx扩展名的离线Chrome插件?