Android: obtenir la position de l'élément dans une liste donnée d'identification:
getItemIdAtPosition()
est une fonction de dans android utilisée pour obtenir l'id d'un élément dans une liste donnée sa position
est-il possible de faire l'inverse, c'est à dire de la position d'un élément est une vue de liste compte tenu de ses id?
Vous aurez un tableau ou une liste de tableaux qui est la sauvegarde de votre Liste de droit de Vue? Je suis sûr que vous pouvez utiliser faire parvenir.
OriginalL'auteur user2595281 | 2013-08-02
Vous devez vous connecter pour publier un commentaire.
Pas. Vous devez le faire manuellement. Créer une méthode publique à l'intérieur de l'adaptateur que vous utilisez; dans cette méthode, la boucle sur la carte les éléments et vérifier chaque id de l'élément. Si c'est == la méthode param, puis retour à l'index.
Mise à jour: Vous pouvez ainsi enregistrer une table de hachage pour la position/l'id de votre carte, si la recherche de la performance représente un problème pour votre cas d'utilisation.
Mise à jour: Si vous souhaitez utiliser cette méthode en dehors de la carte, puis utilisez ci-dessous:
Vous devez comprendre que cela dépend de ce que votre adaptateur contient... néanmoins, voici le code ci-dessus.
peut-u s'il vous plaît dites comment le faire de la même fonction, compte tenu de la liste de la vue et de l'id, parce que je ne sais pas comment obtenir ce tableau? @andrew
Je ne comprends pas vraiment ta question... je suis en supposant que vous n'utilisez pas un Adaptateur personnalisé ? Si non, vous devez créer un, parce que vous ne pouvez pas ajouter cette méthode à la BaseAdapter classe à partir d'Android.
je gues le gars est en posant u pour rendre la fonction d'une façon telle qu'il faut un listview parameteer et l'id par. et retourne le pos. en supposant qu'il a un arrayadapter
OriginalL'auteur Bogdan Zurac
Ne sais pas si la question est encore ouverte. Néanmoins, la pensée que je vais partager ce que j'ai fait en sorte qu'il peut aider quelqu'un qui cherche à faire la même chose.
Vous pouvez utiliser la fonctionnalité de balise de vue de stocker la correspondance entre ce point de vue de l'id et de sa position dans la liste.
La documentation pour les tags sur l'android developer site explique très bien cela:
http://developer.android.com/reference/android/view/View.html#Tags
http://developer.android.com/reference/android/view/View.html#setTag(int, java.lang.Objet)
http://developer.android.com/reference/android/view/View.html#getTag(int)
Exemple:
Dans la méthode getView de votre liste de carte, vous pouvez définir le mapping pour que l'affichage de l'id et de sa position dans la liste, quelque chose comme:
Pour récupérer la position de la vue, vous feriez quelque chose comme:
Un point à noter est que vous avez besoin d'avoir une référence à la Vue, dont la position que vous voulez récupérer. Comment vous procurer la Vue de référence dépend de votre cas spécifique.
OriginalL'auteur sandyiscool
Pas. Selon ce que la carte que vous utilisez pour sauvegarder vos
ListView
l'id et la position peut être la même (je n'ai pas regardé tous lesBaseAdapter
sous-classes donc je ne peux pas dire pour sûr). Si vous regardez le code source pour ArrayAdapter vous verrez quegetItemId
renvoie en fait à la position de l'objet dans la carte. Si la position et l'identification sont les mêmes, il n'est pas nécessaire d'utiliser l'un de l'autre. Sinon, vous avez juste besoin de la recherche de l'adaptateur pour l'objet de votre recherche, en utilisant soit la position ou l'id et vous pouvez trouver les autres de la valeur.Si ce que vous parlez, c'est d'obtenir des objets à l'aide de quelques - clé unique qui vous définir - qui peut en être fait. Ce que vous devez faire est de configurer votre adaptateur de prendre un
HashMap
au lieu d'uneArrayList
ou régulierList
d'objets. Ensuite, vous pouvez créer votre propre méthode pour trouver les clés en tirant simplement que la valeur de laHashMap
.Bien sûr, si vous avez écrit un adaptateur personnalisé tous les paris sont éteints. Je ne considère pas la CursorAdapter si bon bon point. HashMap est encore la méthode la plus simple/le moyen le plus rapide pour faire cela.
OriginalL'auteur Rarw
il est trop tard pour répondre, mais pour en bénéficier...
par exemple, si vous avez listview et vous souhaitez obtenir l'id avec écouteur de clics vous pouvez l'obtenir en >>
OriginalL'auteur Hussain Aali