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 :

Création d'objets grâce à un bouton


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 19
    Par défaut Création d'objets grâce à un bouton
    Bonjour,

    Je travail sous Android Studio, donc en Java et je souhaite créer un bouton qui ajouterai à chaque clic un EditText a mon RelativeLayout. Le but serai de créer grâce à ce bouton un nombre indéfini de EditText ne dépassant pas un certain nombre ( Par exemple, s'il y a 4 joueurs, on clic 4 fois sur le bouton et on se retrouve à 4 EditText à l'écran ).

    J'ai tenté de réaliser ceci avec les variables "gone" et "visible" que l'on retrouve dans l'attribut visibility de l'EditText mais je doute que ce soit le plus efficasse.

    Je cherche donc maintenant d'autres options pour faire ceci, Si vous avez des idées, conseils, tuto qui pourrai m'aider je vous en serai très reconnaissant !

    Merci à vous bonne journée !

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Un edittext c'est ni plus ni moins qu'un objet donc un new permet de le créer.
    La partie un peu plus compliquer c'est qu'il faut le placer dans le layout en lui appliquant certaines règles

    Un exemple (non testé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Relativelayout layout = findViewById(R.id.relative_layout);
     
    EditText et1 = new EditText(context);
     
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.BELOW, R.id.edittext_precedent);
    layout.addView(et1, params);
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 19
    Par défaut
    Salut, merci pour ta réponse.
    Je vois maintenant comment je vais procéder, néanmoins comment puis-je connaitre le nom de l'EditText précédant celui que je veux de créer ? Imaginons que le précédant soit un editText que j'ai créé à travers un new justement ?

    J'ai ce petit bout de code pour l'instant, il me permet simplement de créer un EditText à la suite de celui qui existe déjà, comment puis-je faire en sorte d'en créer autant que je veux à la suite les uns des autres ?

    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
    public class MainActivity extends AppCompatActivity {
     
        RelativeLayout layout;
        RelativeLayout.LayoutParams params;
        EditText et2;
        Button mBtn_add_et;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            et2 = new EditText(this);
            layout = findViewById(R.id.relativeLayout);
            mBtn_add_et = findViewById(R.id.btn_add_et);
            params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            params.addRule(RelativeLayout.BELOW, R.id.et1);
     
            mBtn_add_et.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    layout.addView(et2, params);
                }
            });
        }
    }

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Il faut définir l'id de tes edittext pour ensuite les réutiliser pour le positionnement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int id = View.generateViewId();
    et.setId(id);
    L'id est un entier , donc tu peux le générer manuellement si ca te chante. generateViewId() permet juste d'éviter de potentielle conflit avec des id qui pourrait déjà exister.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 19
    Par défaut
    Ok super merci tu m'as bien débloqué !

    Edit : Après réflexion, je galère un peu avec le dernier point, et c'est bien un new EditText ? Je setId() sur le et et ensuite je récupère avec getId() ? Peut tu me donner plus d'explications please ? Google m'a pas trop aidé

    J'ai réussis a en créer 2 à la suite mais pas de 3ème ou plus :

    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
    public class MainActivity extends AppCompatActivity {
     
        RelativeLayout layout;
        RelativeLayout.LayoutParams params;
        EditText et;
        Button mBtn_add_et;
        int id;
     
        @SuppressLint("NewApi")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            id = View.generateViewId();
     
            mBtn_add_et = findViewById(R.id.btn_add_et);
     
     
            mBtn_add_et.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    et = new EditText(MainActivity.this);
                    et.setId(id);
     
                    layout = findViewById(R.id.relativeLayout);
                    params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
                    params.addRule(RelativeLayout.BELOW, et.getId());
     
                    layout.addView(et, params);
                }
            });
        }
    }

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Ton id doit être généré à chaque création d'objet. Là tu le fais seulement une fois, donc tout tes edittext on le même id.

    Essai quelque chose comme ça :

    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
    public class MainActivity extends AppCompatActivity {
     
        RelativeLayout layout;
        RelativeLayout.LayoutParams params;
        Button mBtn_add_et;
     
        @SuppressLint("NewApi")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
     
     
            mBtn_add_et = findViewById(R.id.btn_add_et);
     
     
            mBtn_add_et.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    EditText et = new EditText(MainActivity.this);
                    int id = View.generateViewId();
                    et.setId(id);
     
                    layout = findViewById(R.id.relativeLayout);
                    params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
                    params.addRule(RelativeLayout.BELOW, id);
     
                    layout.addView(et, params);
                }
            });
        }
    }
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [PowerBuilder] Création d'objets dynamiques
    Par Béné123456789 dans le forum Powerbuilder
    Réponses: 3
    Dernier message: 12/06/2006, 00h33
  2. Réponses: 11
    Dernier message: 16/10/2005, 20h21
  3. [JMenuBar] Création d'objets à la volée
    Par Rampa dans le forum Composants
    Réponses: 5
    Dernier message: 29/06/2005, 13h56
  4. [FLASH MX2004] Création d'objet dynamiquement
    Par noarno dans le forum Flash
    Réponses: 3
    Dernier message: 15/12/2004, 11h00
  5. Cacher des objets grâce à l'Objet TreeView
    Par The_Warlord dans le forum Composants VCL
    Réponses: 2
    Dernier message: 08/11/2004, 09h50

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