2016-07-12 7 views
1

Ich versuche, einen Ziehvorgang durchzuführen, nachdem der Benutzer lange auf ein Recyclerview Element drückt und nach unten oder oben wischt. Wenn ich lange drücke, starte ich bereits den Action-Modus, also nachdem der Benutzer nach langem Drücken nach unten/oben wischt, muss nur der Ziehvorgang beginnen. Ich habe versucht, den onTouch-Listener in der Recyclerview zu implementieren, er empfängt jedoch kein ACTION_DOWN-Ereignis. Es empfängt nur ACTION_MOVE und ACTION_UP, wenn der Finger losgelassen wird. Im Gesten-Listener beginne ich mit dem Ziehen. Aber wie kann man ACTION_DOWN erfassen oder in diesem Szenario nach unten/oben streichen?Recyclerview Ziehvorgang nach Element lange klicken

Ich möchte keine Elemente wie ItemTouchHelper oder DragSort-Listenansicht verschieben.

recyclerAdapter.setOnItemLongClickListener(new Recycler.OnItemLongClickListener() { 
     @Override 
     public void onItemLongClick(View view, int position) { 
       getActivity().startActionMode(this); 
       mStartDrag = true; 
    }}); 

recyclerViewList.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      Logger.log("TAG", "On item touch"+ motionEvent.getActionMasked()); // Returns 2 (ACTION_MOVE) 

      if (mStartDrag) { 

       if (gestureDetector.onTouchEvent(motionEvent)) { 
        return false; 
       } 
      } 
      return false; 
     } 
    }); 
+0

sehen, ob das hilft - https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf#.1gbc3qumq –

Antwort

0
viewHolder.drag.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      mStartDragListener.onStartDrag(viewHolder); 
      return false; 
     } 
    }); 
+0

Rezension: Could eine Erklärung sowie reine verwenden - Code-Lösung. – toonarmycaptain