Obtenir l'Élément de ListView seulement avec OnTouchListener
Dans mon application j'ai un Touchlistener pour ma ListView. Avec le TouchListener je suis en mesure d'obtenir les coordonnées X et Y de l'événement tactile. Maintenant, je veux obtenir l'cliqué sur l'élément de la liste. Comment puis-je obtenir la position de la cliquez sur l'élément dans la liste uniquement avec un onTouchListener? Je ne veux pas utiliser un onItemClickedListener.
L'utilisation de la balise dans
getView
méthode et de récupérer la balise onTouch
événement stackoverflow.com/a/10228723/1276374OriginalL'auteur Cilenco | 2013-06-29
Vous devez vous connecter pour publier un commentaire.
je suis l'obtenir à partir d' SwipeListView Jake Wharton
Merci pour la solution, il fonctionne très bien dans mon personnalisée listview
Suis en train de tester cela avec une vue personnalisée, et c'est génial!
ici le
listView.getChildAt(...)
ne se soucie pas de défilement. Il ne retour des vues à partir de la liste qui sont réellement visibles à l'écran. Si vous voulez obtenir le "Point", vous devez demander la carte et à l'utilisation getFirstVisiblePosition comme ceci:mListView.getAdapter().getItem(i + mListView.getFirstVisiblePosition());
OriginalL'auteur Ozik Abdullaev
la meilleure façon d'utiliser ces méthodes pointToPosition(int x, int y) et pointToRowId(int x, int y)
OriginalL'auteur ant
Si elle n'est pas obligatoire que vous utilisez un
TouchListener
, je recommande fortement d'utiliser unOnItemClickListener
. Il permettra de simplifier votre vie considérablement.Autre que cela, vous aurez à obtenir le décalage actuel et la position de défilement de la
ListView
, la hauteur de chaque ligne, puis faire quelques calculs pour déterminer si le point (x,y) se trouve dans le polygone de chaque ligne. Puisque les lignes sont des rectangles que les mathématiques n'est pas trop difficile, mais à l'aide deOnItemClickListener
serait beaucoup, beaucoup plus facile.En outre, si vous ne besoin d'utiliser
TouchListener
, vous pouvez également utiliserOnItemClickListener
de définir une valeur sur votreAdapter
classe (ou ailleurs) indiquant la plus récente de l'élément cliqué. Puis, dans votreTouchListener
, vous pouvez vérifier que la valeur et l'utiliser pour mettre en corrélation les (x,y) de coordonner et deListView
élément. Ceci, bien sûr, dépend de l'OnItemClickListener
être exécuté en premier. Si l'inverse est vrai, vous pouvez le faire fonctionner, mais au lieu de stocker la position de contact à l'aide de laTouchListener
et ensuite de les mettre en corrélation dans leOnItemClickListener
.OriginalL'auteur J David Smith
Vous classe peut implémenter les deux
View.OnTouchListener, AdapterView.OnItemClickListener
OriginalL'auteur Vikas