看log是先执行的手势onFling才执行list的setOnItemClickListener。
但在onFling中返回true也不管用,还是继续执行那个click。

解决方案 »

  1.   

    看一下调用gesturedetectorlistener的地方,如果它返回值是true的话,那么就不要再让ontouch处理UP的消息了。也就是说处理key up的地方直接返回true,而不需要调用super.onTouchEvent的方法。因为onclick是通过key down和key up的组合来判断是否有点击,截取其中任何一个都可以屏蔽掉click的消息。
    这个消息是通过onTouchEvent传递下去的,与gesturedetector是属于平级的关系。另外如果说setOnItemClickListener执行了,那么gesturedetector的onSingleTapUp也应该执行了,可能是这边返回了false,导致进入了setOnItemClickListener。
      

  2.   

    多谢
    通过在dispatchTouchEvent函数中增加判断就可以,如果detector.onTouchEvent(ev)返回true就让此函数返回true,不再执行分发消息super.dispatchTouchEvent(ev)操作就ok了。