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

Android Discussion :

[Besoin d'aide] Prog Dynamique, boucles et id


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 14
    Points : 11
    Points
    11
    Par défaut [Besoin d'aide] Prog Dynamique, boucles et id
    Bonsoir,

    je souhaites ajouter dynamiquement des éléments dans mon application jusque la pas trop de soucis mais je fais une boucle dans laquelle j'ajoute des composants dans mon relative layout en leur donnant un ID etc.. mais je n'arrive pas a trouver comment récupérer un textview crée dans un tour de boucle précédent.
    Exemple:

    Dans ma boucle au début j'ajoute un bouton avec un textview puis je créer un deuxième bouton et un deuxième textview.

    J'aimerais accéder au premier textview mais je ne sais pas quoi utiliser. Je voudrais quand on clique sur le bouton Plus que le textview change.

    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
     
     
     int     x = 20;     
     int     y = 580;    
     int     flag = 0;   
     int     flagy = 0;  
     int     flagx = 0;  
     int     tmp = 0;    
     
    while(i < sTest.length)
    {
      //tvNb commence a 0
      TextView tvNb= new TextView(this);
      Button bPlus = new Button(this);
     
      tvNb.setId(View.generateViewId());
      bPlus.setId(View.generateViewId());     
     
      //lp = layoutparams
      lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,                         
             RelativeLayout.LayoutParams.WRAP_CONTENT);                                                     
       lp.setMargins(x, y, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);         
       tvNb.setLayoutParams(lp);                                                                         
       tvNb.setTextSize(25);                                                                             
       tvNb.setText("0");                                                                                
       x += 110;               
       lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,                       
            RelativeLayout.LayoutParams.WRAP_CONTENT);                                                   
       lp.setMargins(x, y, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);       
       bPlus.setLayoutParams(lp);                                                                           
       bPlus.setText("+");                                                                                                                                              
       //rv = relative layout
       rv.addView(tvNb);
       rv.addView(bPlus);  
       i++;                                      
       bPlus.setOnClickListener(btnclick);      
       y += 150;                              
    }
    sv.addView(rv, rlp);   
    setContentView(sv);
     
    View.OnClickListener btnclick = new View.OnClickListener()
    {                                                              
        @Override                                                                                                             
        public void onClick(View v)
        {                                                                                         
            int i = 0;                                                                                                        
            clicked = true;                                                                                                   
            Log.v("button ID = ", String.valueOf(v.getId()));                                                                 
            while (i < nbButtonP.length) 
            {                                                                                    
                if (v.getId() == nbButtonP[i])                                                                                
                    Toast.makeText(getApplicationContext(), "TEST" + String.valueOf(i), Toast.LENGTH_SHORT).show();           
                i++;                                                                                                          
         	} 
      	}
    });
    C'est une reconstitution de mon code, parce qu'il est pas beau ya plein de trucs inutile dans l'original dans celui ci aussi mais moins.
    PS: il n'y a rien dans mon XML

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Crée en prime une collection dans laquelle tu stockes dans l'ordre les TextView que tu crées. Cela t'aidera à les référencer et facilitera leur accès.

    Je te conseillerai aussi de tester le rendu sur des densités de terminaux différentes. Je pense percevoir un loup.

    Note : prend l'habitude de bien nommer tes variables. Tu as toi-même besoin de commentaire pour savoir ce qu'elles sont, ce qui est un problème pour la maintenance si la variable évolue mais pas le commentaire. De plus, avec les IDE et l'auto complétion, la longueur du nom d'une variable n'est pas vraiment un problème (bon, quand on atteint 50 caractères, on peut p'têt se poser une question).
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Hizin Voir le message
    Crée en prime une collection dans laquelle tu stockes dans l'ordre les TextView que tu crées. Cela t'aidera à les référencer et facilitera leur accès.
    Que veut dire une collection dans laquelle je stock les Textview ? un tableau ? en faisant une recherche sur "collection textview", je suis tombé sur un tableau de textview, j'y avais penser mais je ne pensais pas que c’était possible de faire ca.
    je vais tester avec un tableau.

    Je te conseillerai aussi de tester le rendu sur des densités de terminaux différentes. Je pense percevoir un loup.
    Je suis un bébé en programmation android et j'avoue (honte à moi), j'essaye d'aller plus vite que la musique, en me documentant vaguement mais je suis dans le rush d'un projet, j'aimerai pondre un prototype au plus vite.
    Ceci dit, oui il faut que je test sur différents terminaux parce que pour le moment je me base sur mon S6 edge plus et je pense que je vais pleurer quand je vais tester sur d'autre config qui vont pas du tout respecter mon agencement des éléments :/

    Note : prend l'habitude de bien nommer tes variables. Tu as toi-même besoin de commentaire pour savoir ce qu'elles sont, ce qui est un problème pour la maintenance si la variable évolue mais pas le commentaire. De plus, avec les IDE et l'auto complétion, la longueur du nom d'une variable n'est pas vraiment un problème (bon, quand on atteint 50 caractères, on peut p'têt se poser une question).
    J'avais mis les noms en commentaire au cas où, vous ne compreniez pas mes variables. Sinon le nom de mes variables sont claire pour moi, j'ai l'habitude de coder en C avec une norme imposée donc c'est vrai que j'ai tendance à raccourcir au maximum le nom de mes variables, mais tu as raison il faut que je change cette habitude quand je code sur android studio.

    En tout cas merci pour tes réponses !

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Par collection, j'entends ceci. Donc une structure de données permettant un accès aux données facilité.
    Je te déconseille d'utiliser des tableaux et te suggère plutôt une structure de données évoluée comme ArrayList par exemple. Je te laisse te renseigner dessus.

    En code, cela donnerait simplement ceci :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    List<TextView> textViews = new ArrayList<>();
    ...
    textViews.add(myNewlyCreatedTextView);
    ...
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    D'accord je vais me documenter la dessus, un grand merci pour ton aide

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

Discussions similaires

  1. Besoin d'aide allocation dynamique
    Par SwordArtOnline dans le forum C
    Réponses: 13
    Dernier message: 24/03/2016, 10h17
  2. Besoin d'aide pour un prog simple
    Par banju dans le forum Lisp
    Réponses: 4
    Dernier message: 27/05/2008, 18h02
  3. Besoin d'aide pour les structures de données dynamiques
    Par aurelie689 dans le forum Pascal
    Réponses: 3
    Dernier message: 26/12/2007, 21h29
  4. Besoin d'aide pour crée un pack de prog merci !
    Par AngelOne dans le forum Windows
    Réponses: 2
    Dernier message: 06/10/2006, 16h06
  5. besoin d'aide sur tableau dynamique
    Par littlesquall dans le forum C
    Réponses: 16
    Dernier message: 02/11/2005, 02h50

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