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 :

Problème View.SetID -> View.getID


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 41
    Par défaut Problème View.SetID -> View.getID
    Bonsoir bonsoir !

    J'ai un petit souci que je n'arrive pas à régler.
    Je crée des images dynamiquement, ces images sont destinées à être affichées dans un slideshow. jusque là pas de problème.
    J'associe donc un Id à chaque image crée grâce à la méthode SetId().
    Lors du clic sur l'image, j'imprime dans la console la valeur de l'image qui est cliquée, ça me ressort bien l'id que j'ai associé.

    Le problème est lorsque je veux faire des tests. View.getID n'est jamais égal à l'ID que j'ai associé à l'image.

    Si je n'ai pas été très clair, n'hésitez pas :p

    Voici ma partie de code :

    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
    if (file360PreviewList.size() >= 1)
    					    		{
    						    		for (int i = 0; i < file360PreviewList.size(); i++)
    						    		{
    						    			System.out.println(i);
    					    		    	imagePreviewBitmap = BitmapFactory.decodeFile(file360PreviewList.get(i));
    					    		    	image = new ImageView(l360Preview.getContext());
    					    		    	image.setImageBitmap(imagePreviewBitmap);
    					    		    	image.setId(i);
    					    		    	//System.out.println("ID = " + Integer.toString(image.getId()));
    					    		    	l360Preview.addView(image);
    					    		    	image.setOnClickListener(new OnClickListener() {
     
    											@Override
    											public void onClick(View v) {
     
    												for(int i = 0; i < file360PreviewList.size(); i++)
    												{											
    													System.out.println("ID OnClick = " + Integer.toString(v.getId()));	
    													if (image.getId() == 1)
    													{
    														System.out.println("gagné !");
    													}
     
    													else 
    													{
    														System.out.println("perdu !");
    													}
    												}								
    											}
    										});
    						    		}
    					    		}

  2. #2
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    Ouais, effectivement, j'ai pas tout compris d'autant que le test == 1 ne marche que pour la deuxième image... enfin bon... je sais pas si c'est vraiment voulu...

    C'est là ou les principes de programmation aident un peu... ma première constatation est un objet image instancié dans chaque élément de la boucle, mais dont la durée de vie est plus grande... c'est hypra dangereux...

    Du coup, le reste m'a semblé plus 'normal'

    J'imagine que "image" est déclaré dans l'activity (sinon pas accessible depuis le un-named 'onclicklistener') et du coup, image.getId() renvoie l'id de la dernière image ajoutée tout le temps.
    Du coup image.getId()==1 et toujours vrai si il y a 2 images, et toujours faux sinon....

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Par défaut
    Si je peux me permettre, les ID ne sont pas vraiment destinés à être utilisés ainsi.
    Moi je pense que les tags (gettag et setTag) sont plus appropriés

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 41
    Par défaut
    Bon hé bien merci ! =)
    Je déclare l'image dans ma boucle, et ça fonctionne !

    J'essaierai avec les getTag() dans la journée, maintenant que ça marche je peux avancer sur la suite ! :p

    Merci encore pour vos réponses !

    Voici le code final si ça peut aider quelqu'un ^^

    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
    if (file360PreviewList.size() >= 1)
    					    		{
    						    		for (int i = 0; i < file360PreviewList.size(); i++)
    						    		{
    						    			System.out.println(i);
    					    		    	imagePreviewBitmap = BitmapFactory.decodeFile(file360PreviewList.get(i));
    					    		    	final ImageView image = new ImageView(l360Preview.getContext());
    					    		    	image.setImageBitmap(imagePreviewBitmap);
    					    		    	image.setId(i);
    					    		    	//System.out.println("ID = " + Integer.toString(image.getId()));
    					    		    	l360Preview.addView(image);
    					    		    	image.setOnClickListener(new OnClickListener() {
     
    											@Override
    											public void onClick(View v) {
     
    												for(int i = 0; i < file360PreviewList.size(); i++)
    												{	
    													if (image.getId() == i)
    													{
    														current360 = file360List.get(i);
    														System.out.println("Current360 = " + current360);
    													}
    												}	
    												Intent intent = new Intent(MainActivity.this, Load360Activity.class);
    												intent.putExtra("current360", current360);
    												startActivity(intent);
    											}
    										});
    						    		}
    					    		}

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

Discussions similaires

  1. Socket, problème pour changer mes view
    Par theandroitor dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 07/05/2014, 22h26
  2. Problème Intégration Expandable List View
    Par italia57 dans le forum Composants graphiques
    Réponses: 28
    Dernier message: 04/07/2012, 08h40
  3. Problème pour modifier une View
    Par lilo415 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/05/2007, 14h19
  4. [SQL] Problème group by sur view
    Par helene34 dans le forum Oracle
    Réponses: 2
    Dernier message: 04/01/2007, 08h25
  5. Problèmes pour accéder à ma view...
    Par loupdeau dans le forum MFC
    Réponses: 4
    Dernier message: 18/05/2005, 14h43

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