也onfling在同一个列表视图

也onfling在同一个列表视图

本文介绍了如何实现这两种ontouch,也onfling在同一个列表视图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个ListView和的onclick执行,也onfling.problem是,当我做一扔(刷卡左到右)的onclick列表视图的事件也越来越executed.How为了克服这个问题? 如何区分触摸(TAP)和一扔(刷卡)的列表视图?

i have a listview and implemented onclick and also onfling.problem is when i do fling(swipe left to right), onclick event of listview is also getting executed.How to overCome this problem? how to differentiate touch(tap) and fling(swipe) in listview?

     listClickListener = new OnItemClickListener() {

           public void onItemClick(AdapterView<?> parent, View v,int position, long id) {
            //Job of Onclick Listener
           }
      };
       mContactList.setOnItemClickListener(listClickListener);
        mContactList.setAdapter(adapter);
        // Gesture detection
        gestureDetector = new GestureDetector(new MyGestureDetector(prosNos));
         gestureListener = new View.OnTouchListener() {
             public boolean onTouch(View v, MotionEvent event) {
                 if (gestureDetector.onTouchEvent(event)) {
                     return true;
                 }
                 return false;
             }
         };

         mContactList.setOnTouchListener(gestureListener);

        }

     public class MyGestureDetector extends SimpleOnGestureListener {

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
           // My fling event
           return false;
        }
    }

P.S。可能吗?评论的ListView的OnClickListener和写入相同的逻辑在任何的onTouchEvent?但我依然毫不怀疑,onFling将调用onTouch。我说得对?

P.S. Is it possible? to comment the OnClickListener of ListView and writing the same logic in any onTouchEvent? but still I have no doubt that onFling will call onTouch. Am I right?

推荐答案

伪code答案澄清上述评论。如何有MySimpleGestureListener的onTouch方法调用。

Pseudo code answer to clarify the above comments. How to have the MySimpleGestureListener's onTouch method called.

public class GestureExample extends Activity {

    protected MyGestureListener myGestureListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        myGestureListener = new MyGestureListener(this);
        // or if you have already created a Gesture Detector.
        //   myGestureListener = new MyGestureListener(this, getExistingGestureDetector());


        // Example of setting listener. The onTouchEvent will now be called on your listener
        ((ListView)findViewById(R.id.ListView)).setOnTouchListener(myGestureListener);


    }


    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // or implement in activity or component. When your not assigning to a child component.
        return myGestureListener.getDetector().onTouchEvent(event);
    }


    class MyGestureListener extends SimpleOnGestureListener implements OnTouchListener
    {
        Context context;
        GestureDetector gDetector;

        public MyGestureListener()
        {
            super();
        }

        public MyGestureListener(Context context) {
            this(context, null);
        }

        public MyGestureListener(Context context, GestureDetector gDetector) {

            if(gDetector == null)
                gDetector = new GestureDetector(context, this);

            this.context = context;
            this.gDetector = gDetector;
        }


        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

            return super.onFling(e1, e2, velocityX, velocityY);
        }

        @Override
        public boolean onSingleTapConfirmed(MotionEvent e) {

            return super.onSingleTapConfirmed(e);
        }





        public boolean onTouch(View v, MotionEvent event) {

            // Within the MyGestureListener class you can now manage the event.getAction() codes.

            // Note that we are now calling the gesture Detectors onTouchEvent. And given we've set this class as the GestureDetectors listener
            // the onFling, onSingleTap etc methods will be executed.
            return gDetector.onTouchEvent(event);
        }


        public GestureDetector getDetector()
        {
            return gDetector;
        }
    }
}

这篇关于如何实现这两种ontouch,也onfling在同一个列表视图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-27 02:44