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 :

EditText dans un ListAdapter


Sujet :

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
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Par défaut EditText dans un ListAdapter
    Bonjour,

    j'ai un problème dans l'application android que je développe en ce moment. Dans une activité, j'ai besoin de faire une listView personnalisé où tout les joueurs qui vont participer entre leurs noms et leur couleur préféré. J'ai donc créer un layout personnalisé avec un edit text et un bouton pour choisir la couleur. Il faudrait enregistrer tout les noms des joueurs et leurs couleurs dans un tableau que j'enverrai à la prochaine activité dans un intent.

    Mon probleme est que lorsque je ne mets pas de textWatcher sur l'EditText du layout personnalisé de la liste, alors cela n'enregistre pas les changements du texte. Enfin, le texte change dans l'affichage mais dans mon tableau de nom il ne change pas. Et lorsque je mets un TextWatcher, l'enregistrement des noms rentrés marche bien dans le tableau de nom et dans l'affichage, mais je perds le texte par défaut qui était "Joueur 1"dans la premiere case, "Joueur 2 dans la 2eme.... A chaque fois on a " Joueur X" dans toutes les cases avec X le numéro du dernier joueur.

    Comment puis je faire ?

    Voici mon 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    class MyAdapter extends BaseAdapter {
     
        private Activity mContext;
        private String[] noms;
        private int taille;
        private int[] tColor=  {Color.rgb(0,171,169),Color.rgb(255,0,151), Color.rgb(162,0,255),
                                Color.rgb(27,161,226),Color.rgb(240,150,9),Color.rgb(204,236,117),
                                Color.rgb(255,247,151),Color.rgb(203,44,49),Color.rgb(133,189,222),
                                Color.rgb(0,119,119),Color.rgb(248,185,207),Color.rgb(255,173,965)};
     
        public MyAdapter( Activity activity, int nb_joueurs) {
           this.mContext = activity;
           this.taille= nb_joueurs;
           this.noms= new String [nb_joueurs];
            for(int i=0 ; i<nb_joueurs; i++) {
                noms[i] = activity.getString(R.string.joueur) + " " + (i+1);
            }
        }
     
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return taille;
        }
     
        @Override
        public Joueur getItem(int position) {
            Joueur joueur = new Joueur(noms[position], tColor[position]);
            return joueur;
        }
     
        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }
     
        class Holder {
            EditText mEditText;
            Button bColor;
        }
     
        class ColorListener implements View.OnClickListener {
     
            @Override
            public void onClick(View v) {
                // il faudrait ouvrir la boite de dialogue ici...
     
            }
        }
     
        ColorListener ColorListener = new ColorListener();
     
     
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
     
            // TODO Auto-generated method stub
            final Holder holder;
     
            if (convertView == null) {
                holder = new Holder();
                LayoutInflater inflater = mContext.getLayoutInflater();
                convertView = inflater.inflate(R.layout.noms_joueurs_layout, null);
                holder.mEditText = (EditText) convertView
                        .findViewById(R.id.mEditText);
     
                holder.bColor =(Button) convertView.findViewById(R.id.bColor);
                holder.bColor.setBackgroundColor(tColor[position]);
                holder.bColor.setOnClickListener( ColorListener);
     
                convertView.setTag(holder);
            } else {
                holder = (Holder) convertView.getTag();
            }
     
            holder.mEditText.setText(noms[position]);
    //        holder.mEditText.addTextChangedListener(new TextWatcher() {
    //
    //            String oldTexte = holder.mEditText.getText().toString();
    //            @Override
    //            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    //
    //            }
    //
    //            @Override
    //            public void onTextChanged(CharSequence s, int start, int before, int count) {
    //            }
    //
    //            @Override
    //            public void afterTextChanged(Editable s) {
    //                 noms[position] = s.toString();
    //
    //
    //            }
    //        });
            return convertView;
        }
    }
    J'ai mit le TextWatcher en commentLine.

    Et voici ce que j'obtiens avec ce code :

    Nom : Sans titre.png
Affichages : 208
Taille : 12,1 Ko


    Merci beaucoup ! S'il faut autre chose, dites moi.

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Par défaut
    C'est bon j'ai trouvé par moi meme

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 67
    Par défaut
    Salut,

    Tu peux poster ta solution stp ?
    Perso j'avais pas bien bien compris la question...

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Par défaut
    Je ne sais pas si ca va etre plus clair mais le probleme etait que la génération des textes par défaut dans les edit text appelait le OnTextChangedListener et modifier tout les editText déja créer.

    J'ai utilisé un OnkeyListener plutot et ca marche bien maintenant.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Par défaut
    J'ai un autre probleme dans le meme adapteur et je vais essayer de m'exprimer de maniere compréhensible cette fois

    Dans ce meme listAdapter, j'aimerais que lorsque l'on clique sur le bouton, cela nous ouvre une boite de dialogue de ce genre https://github.com/LarsWerkman/HoloColorPicker
    J'ai donc copié tout les codes (d'ailleurs est ce légal ? est t'il libre de droit ?) et j'ai grace a un OnClickListener, fait en sorte que lorsqu'on clique dessus cela ouvre une AlertDialog. La boite de dialogue a bien le layout qu'il faut et ca semble fonctionnel sauf que je n'arrive pas à récuperer la couleur sélectionner par l'utilisateur lorsqu'il clique sur le bouton "ok" . Comment puis-je faire pour recuperer cette couleur ?

    Merci !

    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
    @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
     
            final Holder holder;
     
            if (convertView == null) {
                holder = new Holder();
                LayoutInflater inflater = mContext.getLayoutInflater();
                convertView = inflater.inflate(R.layout.noms_joueurs_layout, null);
                holder.bColor =(Button) convertView.findViewById(R.id.bColor);
     
                convertView.setTag(holder);
            } else {
                holder = (Holder) convertView.getTag();
            }
     
            holder.bColor.setBackgroundColor(tColor[position]);
            holder.bColor.setOnClickListener( new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    FicheDialog();
     
                }
            });
     
     
     
            return convertView;
        }
     
        public void FicheDialog(){
     
            AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
            dialog.setTitle("choix");
            dialog.setView(LayoutInflater.from(mContext).inflate(R.layout.color_picker_dialog, null));
            dialog.show();
     
            dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
     
    //La j'aimerais récuperer la couleur séléctionner mais je ne sais pa comment faire :'(
                    dialog.dismiss()
                }
            });
        }
    }

Discussions similaires

  1. Récupérer valeur d'un editText dans le fragment
    Par mailoy dans le forum Android
    Réponses: 35
    Dernier message: 20/05/2015, 08h34
  2. Utiliser la valeur d'un EditText dans uns autre vue
    Par nolll dans le forum Android
    Réponses: 7
    Dernier message: 09/05/2014, 20h21
  3. mettre le contenu d'un edittext dans dbgrid en Delphi 7
    Par nahla86 dans le forum Débuter
    Réponses: 4
    Dernier message: 27/12/2013, 09h30
  4. [C++ Builder]StringGrid éfface EditText dans un fichier
    Par Catskan dans le forum C++Builder
    Réponses: 6
    Dernier message: 08/08/2012, 22h05
  5. Réponses: 2
    Dernier message: 17/08/2006, 12h36

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