L'attribution de l'ID d'une Ligne dans un Android ListView
J'ai une ListView. Quand un élément de la liste est tapé, il charge d'une sous-vue. Je veux attribuer un ID à chaque ligne de la liste, donc je ne peux passer que l'ID de la sous-vue. Comment puis-je attribuer un code spécifique pour chaque ligne dans la liste?
Ici est la façon dont je suis actuellement le chargement de la liste:
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, mArrayList));
OriginalL'auteur Chris | 2010-06-14
Vous devez vous connecter pour publier un commentaire.
Voici comment j'ai résolu le problème. J'ai eu la employee_ids et employee_names du local de Base de données SQLite, puis j'ai créé une liste de tableaux de employeeNamesArray et une liste de tableaux de employeeIdArray en même temps. Ainsi, la employeeIdArray[0] correspond à employeeNameArray[0], employeeIdArray[1] correspond à employeeNameArray[1], etc.
Une fois le ArrayLists ont été créés, je nourris employeeNameArray dans la ListView.
Plus tard, en onListItemClick, j'ai récupérer la position de la liste sélectionné ligne. Cette "position" sera corrospond à la position dans la ArrayLists - donc, si je sélectionne la première ligne dans la liste, la position sera de zéro, et employeeNameArray[0] correspond à employeeIdArray[0]. Je prends la coroloating entrée de employeeIdArray et pousser à l'Activité suivante en utilisant putExtra.
OriginalL'auteur Chris
Salut Chris, vous avez déjà la position de l'id dans votre liste, de mettre en œuvre la onListItemClick() fonction.
si vous voulez assing votre propre id de l'utilisation setTag()
OriginalL'auteur Elenasys
Vous ne pouvez pas faire cela avec un niveau ArrayAdapter Vous avez besoin d'étendre la ArrayAdapter et remplacer le getItemId() méthode et peut-être aussi le hasStableIds() méthode.
Vous devez alors retourner vrai dans le hasStableIds méthode et de générer votre id de l'élément à la position qui est donné à votre getItemId méthode.
OriginalL'auteur Janusz
Après avoir passé des heures sur cette, de cette façon la plus simple que j'ai trouvé était de remplacer bindView de la carte et définir une valeur de balise contenant la ligne de _id sur l'élément - dans mon cas, c'était un bouton dans la ListView ligne.
OriginalL'auteur siliconrockstar