Listview大坑,使用OnItemClickListener代替对子view单独设置OnClickListener
2017-02-14 17:29
1101 查看
当每调用一次notifyDataSetChange,listview就会取消它所有子view的touch事件,此时action_up事件被取消改为action_cancel事件,子view的onclick函数就不会响应了。
我在实际应用中在制作下载列表的时候就因为进度条要不断更新,调用notifyDataSetChange,导致onClick函数无法响应没法取消下载,如果用OnItemClickListener来实现相同的功能就不会有问题,主要是用习惯了recyclerview,recyclerview并不会有这个问题,而且recyclerview也没有OnItemClickListener
Listview在layoutChildren函数中如果dataChanged为true,那么就会取消子view的touch事件,如果在触发了down后被取消了touch事件,那么就接收不了up事件,这时候就没法响应子view的onclick了,因为如果是子view自己设置onclick,那么只有子view自己的onTouchEvent函数接收到了up事件才会响应onClick,而OnItemClickListener则是父类接收到了up事件就会直接调用对应的子view的performClick,所以即使子view的up事件被取消了,依然能响应OnItemClickListener
我在实际应用中在制作下载列表的时候就因为进度条要不断更新,调用notifyDataSetChange,导致onClick函数无法响应没法取消下载,如果用OnItemClickListener来实现相同的功能就不会有问题,主要是用习惯了recyclerview,recyclerview并不会有这个问题,而且recyclerview也没有OnItemClickListener
Listview在layoutChildren函数中如果dataChanged为true,那么就会取消子view的touch事件,如果在触发了down后被取消了touch事件,那么就接收不了up事件,这时候就没法响应子view的onclick了,因为如果是子view自己设置onclick,那么只有子view自己的onTouchEvent函数接收到了up事件才会响应onClick,而OnItemClickListener则是父类接收到了up事件就会直接调用对应的子view的performClick,所以即使子view的up事件被取消了,依然能响应OnItemClickListener
if (dataChanged) { for (int i = 0; i < childCount; i++) { recycleBin.addScrapView(getChildAt(i), firstPosition+i); } }
相关文章推荐
- ItemView设置了listener对ListView使用OnItemLongClickListener的影响
- GridView,ListView 等adapter容器view设置setOnItemClickListener不响应的问题。
- ArrayAdapter<String>使用,布局设置内容,listview 设置setOnItemClickListener无响应
- ListView 中使用Button中不响应OnItemClickListener事件
- Android:ListView、CheckedTextView 、setOnItemClickListener
- ListView和Gridview设置setOnItemClickListener无效解决方案
- 安卓ListView中item点击setOnItemClickListener响应设置
- 如果ListView中的单个Item的view中存在checkbox,button等view,会导致ListView.setOnItemClickListener无效
- ExpandableListView ChildView OnItemLongClickListener
- android错误之ListView设置setOnItemClickListener失效
- ListView 中设置setonitemclicklistener()监听时,无法获取item条目的点击事件焦点
- 基于RecyclerView的BaseAdapter、ViewHolder、OnItemClickListener联合使用
- 解决使用PullToRefreshListView找不到setOnItemLongClickListener方法的问题
- 解决textview.setMovementMethod后Listview的OnItemClickListener点击失效问题
- setOnItemClickListener给ListView设置监听没反应
- Android中的ListView设置setOnItemClickListener后发现onItemClick毫无作用的问题
- 设置RecyclerView的OnItemClickListener
- 使用OnItemClickListener时关于焦点颜色的设置问题
- Android-使用ListView时点击listview中的控件setOnItemClickListener()方法不执行(回调)
- RecyclerView设置OnItemClickListener的方法