2011-07-06 16 views
21

Tengo una lista de videos ubicados en la tarjeta SD. En este punto, solo necesito ayuda para crear gestos o deslizar la detección de cada fila en la vista de lista. Gracias a esta pregunta en stackoverflow Fling gesture detection on grid layout, implementé el gesto en la vista de lista. Ahora detecta fácilmente cuando el usuario se desliza en la dirección correcta o la izquierda. Pero este gesto es para toda la lista. Solo quiero saber cómo puedo implementar esta detección de barrido para filas individuales. Por ejemplo, la aplicación ahora hace un brindis que imprime "Deslizar a la derecha", "Deslizar a la izquierda". Solo quiero que sea como "Deslizar hacia la derecha en la fila n. ° 1", "Deslizar hacia la izquierda en la fila n. ° 3", etc. Espero que mi pregunta sea clara.Detección de barrido para cada fila de listview

Esperamos algunas respuestas útiles. Gracias

+1

¿Has probado las implementaciones del barrido ListView sugeridas [aquí] [1]? [1]: http://stackoverflow.com/questions/4373485/android-swipe-on-list/9340202#9340202 –

Respuesta

0

Creo que lo que estás buscando es SwipeView (o quizás incluso ViewFlow) en lugar de la detección de gestos de Android estándar.

+0

SwipeView o ViewFlow se utiliza mejor en aquellos casos en los que tenemos diferentes puntos de vista. Tengo una lista simple con varios elementos que aparecen en la misma página. Solo quiero un gesto de deslizar para cada fila individual ... ¿Alguna otra sugerencia? –

1

Estoy usando el enfoque por artículo en mi solución - echar un vistazo here Mi código de detección de deslizamiento puede ser un poco diferente de la detección de barrido estándar, pero me funciona perfectamente. Y estoy usando etiquetas adjuntas para obtener los datos relacionados con los artículos. Espero que ayude, pero si tiene algunas preguntas házmelo saber y trataré de explicarlo con más detalle.

1

Según mi opinión es el uso de Boole para el artículo, cuando dicho elemento se tocó establece como verdadero, Usando onTouchListener,

ListItem.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View arg0, MotionEvent event) { 
      click=true; 
      return click; 


     } 

    });` 

A continuación, puede anular este:

@Override 
public boolean dispatchTouchEvent(MotionEvent ev){ 
super.dispatchTouchEvent(ev); 
Log.v("Inside", "=====Dispatch Event==="); 
if(click){ 
    Log.v("Inside", "=====Dispatch Event=T=="); 
    click=false; 
    return gestureDetector.onTouchEvent(ev); 

}else{ 
    return false; 
} 

} 
4

Tome una mirada en this answer y utilizar pointToPosition método dentro onFling Evento

@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
    try { 
     Toast.makeText(listAdapter.getItem(listView.pointToPosition(Math.round(e1.getX()), Math.round(e1.getY())).toString()); 
     return super.onFling(); 
    } catch(Exception e) { 
     // do nothing 
    } 
} 
Cuestiones relacionadas