Jump to content
Sign in to follow this  
TeChn4K

[Résolu] Stockage des id dans une listeview

Recommended Posts

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 ;)

Edited by TeChn4K

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Bon, j'ai tout simplement ajouter un TextView avec l'attribut visibility="gone"

Et je stock l'id dans l'attribut text.

Merci ;)

Share this post


Link to post
Share on other sites

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 !

Edited by Cyril Mottier

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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.

Edited by TeChn4K

Share this post


Link to post
Share on other sites
par n'importe quel moyen les IDs de ce

As tu implémenté une méthode getView() dans un quelconque adapter ?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  





×
×
  • Create New...