tutorial recyclerview developer custom arrayadapter android listview

recyclerview - listview android eclipse



Vista de lista deslice el elemento hacia la izquierda y deslice hacia la derecha? (2)

Creo que puede usar OnTouchListener y catch padding, movimiento de movimiento inicial y actual en elementos de la lista por MotionEvents como ACTION_DOWN , ACTION_MOVE , UP o CANCEL .

¿Puede un elemento de vista de lista responder deslizar hacia la izquierda y deslizar hacia la derecha?

Si es así, ¿cómo aplicar el deslizamiento de android hacia la izquierda o hacia la derecha para abrir otra intención? Quiero lo mismo que llamar al teléfono o mensaje en la vista de contacto en Android de forma predeterminada.

Gracias


Prueba esto:

navigaList.setOnTouchListener(swipeDetector); navigaList.setOnItemClickListener(listener); OnItemClickListener listener = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { if(swipeDetector.swipeDetected()) { if(swipeDetector.getAction() == Action.RL) { } else { } } };

SwipeDetector.java

public class SwipeDetector implements View.OnTouchListener { public static enum Action { LR, // Left to Right RL, // Right to Left TB, // Top to bottom BT, // Bottom to Top None // when no action was detected } private static final String logTag = "SwipeDetector"; private static final int MIN_DISTANCE = 100; private float downX, downY, upX, upY; private Action mSwipeDetected = Action.None; public boolean swipeDetected() { return mSwipeDetected != Action.None; } public Action getAction() { return mSwipeDetected; } public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { downX = event.getX(); downY = event.getY(); mSwipeDetected = Action.None; return false; // allow other events like Click to be processed } case MotionEvent.ACTION_MOVE: { upX = event.getX(); upY = event.getY(); float deltaX = downX - upX; float deltaY = downY - upY; // horizontal swipe detection if (Math.abs(deltaX) > MIN_DISTANCE) { // left or right if (deltaX < 0) { Logger.show(Log.INFO,logTag, "Swipe Left to Right"); mSwipeDetected = Action.LR; return true; } if (deltaX > 0) { Logger.show(Log.INFO,logTag, "Swipe Right to Left"); mSwipeDetected = Action.RL; return true; } } else // vertical swipe detection if (Math.abs(deltaY) > MIN_DISTANCE) { // top or down if (deltaY < 0) { Logger.show(Log.INFO,logTag, "Swipe Top to Bottom"); mSwipeDetected = Action.TB; return false; } if (deltaY > 0) { Logger.show(Log.INFO,logTag, "Swipe Bottom to Top"); mSwipeDetected = Action.BT; return false; } } return true; } } return false; } }