当使用带有侧滑条目的listview时,并且listview的条目具有点击事件,无可避免的,该条目的侧滑和点击事件会起冲突。如何解决呢?看下面代码
设置一个全局变量是关键,该变量用来判断条目是否发生过移动,如果发生过移动,就属于侧滑事件,否则就是点击事件。
package com.szh.inventorymanage.activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ListView;
/**
* 这是一个测试类
* @author Administrator
*
*/
public class TestClass extends Activity{
// 这个是要点击和侧滑的listview
private ListView listView;
// 判断是否发生侧滑的变量
private boolean weatherMove;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
initClick();
}
/**
* 在这里初始化点击事件和侧滑事件的冲突
*/
private void initClick() {
// listview 设置触摸监听
listView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// 判断事件类型
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
// 如果滑动,这里把变量进行改变
weatherMove = true;
break;
case MotionEvent.ACTION_UP:
// 在抬起的时候进行事件的处理
if(!weatherMove){
// 没有侧滑,进行点击事件的处理,跳转界面或者其他的
}
// 处理完以后,把设置的变量还原回去
weatherMove = false;
break;
default:
break;
}
return false;
}
});
}
}