在项目中有个listview中的下拉刷新需求,在activity中重写onTouchevent方法无效。
是因为点击事件被listview截取了,无法收到点击事件
具体的点击事件分发机制详见
http://blog.youkuaiyun.com/guolin_blog/article/details/9097463
解决方法
activity implents OnouchListener
在onTouch方法中
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (mListView.getLastVisiblePosition() == mOnlineListAdapter.getCount()){
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
startY=motionEvent.getY();
break;
case MotionEvent.ACTION_UP:
endY=motionEvent.getY();
if(Math.abs(endY-startY)>200&&mOnlineListAdapter.getCount()<100&&
mOnlineListAdapter.getCount()%25==0){
updateLoadingBar(LOADING_NOW);
size+=25;
requestForFreshMusic(size);
}else if(Math.abs(endY-startY)>200&&mOnlineListAdapter.getCount()%25!=0){
updateLoadingBar(LOADING_FINISH);
}
break;
}
}
//此处一定是返回false,点击事件没有消费完全,需要向下分发
return false;
验证了下,搞定。

本文讨论了在Android应用中使用ListView时遇到的下拉刷新与点击事件冲突问题,并提供了解决方法。通过在Activity中实现OnTouchListener并重写onTouchEvent方法,可以有效处理ListView的下拉刷新事件而不影响点击事件的正常分发。
1688

被折叠的 条评论
为什么被折叠?



