TeChn4K Posté(e) 24 novembre 2009 Share Posté(e) 24 novembre 2009 (modifié) Bonjour ! je récupère des infos depuis une base du téléphone et je les affiches dans une ListView (par le biais d'un adapter). En ce moment, je suis entrain de faire les méthodes de gestion, à savoir : ajouter un champs, supprimer un champs, le modifier ... Pour ce qui est de la suppression, j'ai besoin de l'id afin de construire ma requête et supprimer la bonne ligne (WHERE id = *). Seulement je ne sais pas comment, ni où, stocker l'id quand je construit la listview... J'ai pensé à l'attribut ContentDescription du LinearLayout des éléments de ma ListView, mais il y a sûrement mieux ? Peut être remplir un TextView en visibility false ? Merci de me dire selon vous la meilleur façon de faire ;) Modifié 24 novembre 2009 par TeChn4K Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 24 novembre 2009 Share Posté(e) 24 novembre 2009 Tu peux effectivement faire comme tu as dit Pour ma part je préfère créer un item custom et l'adapter qui va bien avec Dans cet item custom je met un attribut id et je m'en sers au moment venus :o Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
TeChn4K Posté(e) 24 novembre 2009 Auteur Share Posté(e) 24 novembre 2009 Bon, j'ai tout simplement ajouter un TextView avec l'attribut visibility="gone" Et je stock l'id dans l'attribut text. Merci ;) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cyril Mottier Posté(e) 27 novembre 2009 Share Posté(e) 27 novembre 2009 (modifié) Non non non et non ! Il faut séparer la vue des données ! C'est un principe élémentaire de la programmation. Pourquoi t'acharne tu à stocker les id dans la vue? C'est pas plus simple d'avoir tout simple une tableau de String pour les données et une ListView? Si tu clique sur l'item à la position i ça veut dire que l'id associé est à l'index i dans ton tableau d'ID. Inclure un élément View dans ta hiérarchy de vue est tout simplement la pire des choses que tu puisse faire ! Même si le framework n'est pas bête et vire carrément les onMeasure, onLayout et onDraw des vues en visibility View.GONe ça reste horrible car cela signifie qu'un objet TextView est alloué pour STRICTEMENT rien ! Modifié 27 novembre 2009 par Cyril Mottier Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Galize Posté(e) 27 novembre 2009 Share Posté(e) 27 novembre 2009 Exactement, avec autant de mauvaise humeur aussi. L'explication est très correcte. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 27 novembre 2009 Share Posté(e) 27 novembre 2009 D'où ma solution avec mon objet custom et son attribut id :p Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cyril Mottier Posté(e) 2 décembre 2009 Share Posté(e) 2 décembre 2009 Exactement, avec autant de mauvaise humeur aussi. L'explication est très correcte. Désolé si j'ai paru "de mauvaise humeur" :). Je voulais simplement fortement insister sur les désavantages de cette solution afin que d'autres ne fassent pas l'erreur. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
TeChn4K Posté(e) 2 décembre 2009 Auteur Share Posté(e) 2 décembre 2009 (modifié) Ok Cyril ! Bon je viens de revoir un peu tout ça pour l'optimisation ! Je crois en fait ne même pas avoir besoin d'un tableau d'int pour stocker mes id en parallèle de ma ListView. (je dis je crois car peut être y aura-t-il une meilleure méthode :D). Je m'explique : Mon ListView adapter contient des objets qui ont en attribut un int (le fameux id), 2 strings, et un drawable. Dans la méthode getView, je voulais stocker par n'importe quel moyen les IDs de ces objets dans le but de les récupérer plus tard sur un onItemClick. Mais c'était sans connaitre ce bout de code : public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) { MonObjet o = (MonObjet) getListView().getItemAtPosition(position); } Il me permet de récupérer l'objet contenu par mon élément cliqué, et donc d'appeler ses méthodes dont "getID()". J'attends vos retours ! Aussi si je n'emploie pas les bons termes, n'hésitez pas à me le dire, je ne demande qu'a progresser. EDIT: @Fluckysan : Je n'avais pas compris ta solution car à l'époque je ne savais pas comment récupérer mon objet depuis mon événement. Modifié 2 décembre 2009 par TeChn4K Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
arnouf Posté(e) 3 décembre 2009 Share Posté(e) 3 décembre 2009 par n'importe quel moyen les IDs de ce As tu implémenté une méthode getView() dans un quelconque adapter ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
TeChn4K Posté(e) 3 décembre 2009 Auteur Share Posté(e) 3 décembre 2009 par n'importe quel moyen les IDs de ce As tu implémenté une méthode getView() dans un quelconque adapter ? Oui oui, j'ai bien ma méthode getView() dans ma classe héritant de ArrayAdapter pour récupérer les attributs de mon objet et remplir mes vues. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 3 décembre 2009 Share Posté(e) 3 décembre 2009 Dsl si je ne m'étais pô fait comprendre :o Mais c'est bien de cette solution dont je parlais ;) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.