2009-08-27 6 views
6

J'ai une application Android avec un ListActivity dans la vue principale. La liste contient un LinearLayout avec un TextView et un bouton de suppression caché. Le bouton de suppression sera caché par défaut. Je veux utiliser un geste de lancer pour montrer le bouton. Je suis capable de détecter le geste fling grâce à la question # 937313 sur stackoverflow. Il n'est pas clair pour moi comment déterminer quel élément de la liste a été lancé, puisque l'écouteur onTouch écoute le ListView. L'élément n'est pas nécessairement sélectionné, donc les méthodes getSelected * ne peuvent pas être utilisées de manière fiable. J'utilise le SimpleListAdaptor donc je n'ai pas d'accès direct aux objets View dans le ListView.Comment gérer le geste de fling pour Android ListActivity

Des idées?

Répondre

14

Essayez d'utiliser AbsListView.pointToPosition() pour déterminer l'élément de liste pour la coordonnée X, Y dans votre vue de liste.

Si vous utilisez la recette de # 937313, vous devriez être en mesure de passer outre onFling() plus ou moins comme suit:

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

* pointToPosition() * prend int et non flotter comme arguments utiliser si * Math .round (e1.getX()), Math.round (e1.getY()) * au lieu d'utiliser directement * e1.getX(), e1.getY() * – FreewheelNat

Questions connexes