问题描述
- android 在listview滑动删除的时候怎么禁止其ITEM跳转
-
// 如果滑动了>50个像素,就显示出删除按钮 if (startX > event.getX() + 50) { startX = 0;// 因为公用一个事件处理对象,防止错乱,还原startX值 scrollView(view, HorizontalScrollView.FOCUS_RIGHT); mScrollView = view; } else { scrollView(view, HorizontalScrollView.FOCUS_DOWN); //这个地方加什么可以让滑动删除的时候不跳转。 Intent intent = new Intent(myActivity,ProductDetailActvivity.class); intent.putExtra("Url", ProductList.get(position).getLinkUrl()); myActivity.startActivity(intent); } 我现在是 在滑动删除listview的时候会跳转。怎么处理
解决方案
不要把跳转事件放在这个位置,如果真要放加上个变量判断下是否跳转,主要是你的代码不够完整,我也说不完整
解决方案二:
重写view的touchevent处理方式,具体看view的源码
解决方案三:
/** HorizontalScrollView的滑动事件 /
private class ScrollViewScrollImpl implements OnTouchListener {
/* 记录开始时的坐标 */
private float startX = 0;
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// 如果有划出删除按钮的itemView,就让他滑回去并且锁定本次touch操作,解锁会在父组件的dispatchTouchEvent中进行
if (mScrollView != null) {
scrollView(mScrollView, HorizontalScrollView.FOCUS_LEFT);
mScrollView = null;
mLockOnTouch = true;
return false;
}
startX = event.getX();
break;
case MotionEvent.ACTION_UP:
HorizontalScrollView view = (HorizontalScrollView) v;
// 如果滑动了>50个像素,就显示出删除按钮
if (startX > event.getX() + 50) {
startX = 0;// 因为公用一个事件处理对象,防止错乱,还原startX值
scrollView(view, HorizontalScrollView.FOCUS_RIGHT);
mScrollView = view;
} else {
scrollView(view, HorizontalScrollView.FOCUS_LEFT);
// 单击ITEM跳转详情页面
Intent intent = new Intent(myActivity,ProductDetailActvivity.class);
intent.putExtra("Url",ProductList.get(position).getLinkUrl());
myActivity.startActivity(intent);
}
break;
}
return true;
}
}
这个是完整的代码!