IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Sélection / désélection d'un objet complexe dans une listview


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 52
    Points : 60
    Points
    60
    Par défaut Sélection / désélection d'un objet complexe dans une listview
    bonjour,

    cela fais plusieurs jour que je cherche en vain,

    j'ai une listView avec ans l'item un radio bouton, quand le clic sur l'un je dois déselectionné le bouton radio qui était sélectionné précédemment.

    J'ai essayé plusieurs combinaison mais sans succès.
    je vous présente le code de ma qui n'ai pas très bon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    public View getView(int position, View convertView, ViewGroup parent) {
    			View view = null;
     
    			if (convertView == null) {
    				LayoutInflater inflator = getLayoutInflater();
    				view = inflator.inflate(R.layout.configurevehiculeitem, null);
    				final ViewHolder viewHolder = new ViewHolder();
     
     
    				viewHolder.Car = (ImageView) view.findViewById(R.id.img);
    				viewHolder.Immat = (TextView) view.findViewById(R.id.immatriculation);
    				viewHolder.couleur = (TextView) view.findViewById(R.id.couleurvehicule);
    				viewHolder.Marq = (TextView) view.findViewById(R.id.marquevehicule);
    				viewHolder.Taille = (TextView) view.findViewById(R.id.taillevehicule);
    				viewHolder.checkbox = (RadioButton) view.findViewById(R.id.checkstate);
    				viewHolder.position=position;
     
    				view.setTag(viewHolder); // dans le vue on garde le modèle
     
     
     
    				viewHolder.checkbox.setOnClickListener(new View.OnClickListener() {
    					@Override
    				public void onClick(View v) {
    					ConfigureItem element = (ConfigureItem) viewHolder.checkbox.getTag(viewHolder.position);
    					element.setSelected(((RadioButton) v).isChecked());
    					Matricule=element.getName();	
    					Log.i("Le CLIC","=========== Je clic sur le point :"+Matricule);
     
    					ConfigureItem Anc_element = (ConfigureItem) viewHolder.checkbox.getTag(POSITION);
    					Anc_element.setSelected(false);
     
    					}
    					});
     
    			} else {
    				view = convertView;	
    			}
    			//on récupère le vue sauvegardé
    			ViewHolder holder = (ViewHolder) view.getTag();
    			// Dans la vue on garde les données pour le getname
    			holder.checkbox.setTag(position,listItem_retravail.get(position));
     
    			holder.Immat.setText(listItem_retravail.get(position).getName());
    			holder.couleur.setText(listItem_retravail.get(position).getCouleur());
    			holder.Marq.setText(listItem_retravail.get(position).getMarque());
    			holder.Taille.setText(listItem_retravail.get(position).getTaille());
    			holder.checkbox.setChecked(listItem_retravail.get(position).isSelected());
    			// je sauvegarde la position qui est sélectionné
    			if (listItem_retravail.get(position).isSelected())
    				POSITION=position;
    			holder.Car.setImageBitmap(listItem_retravail.get(position).getPhoto());
     
     
    			return view;
    		}
    	}
    Je n'y arrive vraiment merci de m'aider.

  2. #2
    Membre habitué Avatar de Willy55
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 188
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    J'ai souvent galérer avec les sélection d'item complexe dans les listview

    Vous avez du construire votre listview avec un fichier XML qui contient votre item type (avec la checkbox)

    Vous devez utiliser la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void onItemClick(AdapterView<?> a, View v, int position, long id)

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 52
    Points : 60
    Points
    60
    Par défaut où placer cette méthode ??
    merci de me répondre, mais concrètement cette méthode se place où dans le getview ????

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    La méthode se place ou on veut, elle est "passée" au ListView comme "listener".

    Ceci étant... ListView permet déjà la sélection unique (regarder les attributs des ListView). Reste à afficher cette sélection à l'utilisateur...

    Le problême est que ListView ne va passer l'état "checked" *que* à l'item (la view retournée par le getView de l'adapter).

    Solution 1: Surcharger le getView pour *toujours* retourner une nouvelle vue (c'est lent ! et pas vraiment "android spirit") mais ca aura l'interet de marcher... Attention cependant il faudra clicker sur la check-box pour avoir l'effet souhaité.

    Solution 2: Laisser le getView sans aucune gestion du "check", et utiliser un "CheckableLayout" à la place du layout principal des items. Le CheckableLayout sera une classe héritant du Layout voulu, et proposant l'interface Checkable, qui se chargera de passer le state "checked" aux view voulues à l'intérieur.

    Solution 3: Idem solution2... Mais faire en sorte que le CheckableLayout soit un vrai Checkable (qui retient le state lui même => gestion des state), et marquer le CheckedTextBox comme héritant des states du parent => quand le layout est 'checked', le CheckedTextBox le devient aussi. Cette solution est plus complexe (je ne comprends toujours pas pourquoi elle n'est pas de base dans Android), mais permet de faire ce qu'on veut: des check-box, des background qui changent en fonction de l'état, etc...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 52
    Points : 60
    Points
    60
    Par défaut selection / deselection objet complexe dans listView
    merci j'essai et je reviens vers vous

    cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage d'objets complexe dans une JSP
    Par seyar666 dans le forum Taglibs
    Réponses: 2
    Dernier message: 12/06/2012, 11h56
  2. Réponses: 2
    Dernier message: 23/03/2009, 13h25
  3. [VB.NET] Objet .Tag dans une ListView
    Par Lois dans le forum Windows Forms
    Réponses: 7
    Dernier message: 12/10/2004, 16h35
  4. Transmission d'un objet crée dans une fonction
    Par EvilAngel dans le forum ASP
    Réponses: 2
    Dernier message: 10/05/2004, 20h19
  5. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 14h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo