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 :

Mise à jour de ma listView


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2015
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2015
    Messages : 96
    Par défaut Mise à jour de ma listView
    Bonsoir,

    Je reste collé à un détail que je n'arrive pas à résoudre sur ma listView.

    Elle se compose de 2 Textes par lignes.

    En lançant l'application et en renseignant les "Edittext" par Exemple "Maison" "bateau"

    Seul l'EditText "maison" s'affiche, mais il s'affiche 2 fois.

    C'est à dire qu'il prend la place du 2ème mot (bateau).

    Cela fait un sacré bout de temps que j'essaye de trouver une solution.

    Si vous avez une petite idée, merci de m'en faire part ...

    Pas besoin de préciser que je suis nul et pas encore débutant .....

    Mon code java :

    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
    public class dynamicListView extends ListActivity implements OnClickListener  {
     
        EditText textContent;
        EditText textContent2;
        Button submit;
        ListView myList;
     
        private static class ListViewAdapter extends BaseAdapter {
            private LayoutInflater mInflater;
     
     
            public ListViewAdapter(Context context) {
     
                mInflater = LayoutInflater.from(context);
     
     
     
            }
            public int getCount() {
                return ListviewContent.size();
            }
            public Object getItem(int position) {
                return position;
            }
            public long getItemId(int position) {
                return position;
            }
            public View getView(int position, View convertView, ViewGroup parent) {
     
                ListContent holder;
     
     
                if (convertView == null) {
                    convertView = mInflater.inflate(R.layout.list_element, null);
     
                    holder = new ListContent();
                    holder.text = (TextView) convertView.findViewById(R.id.TextView01);
                    holder.text2 = (TextView) convertView.findViewById(R.id.TextView02);
                //    holder.text.setCompoundDrawables(convertView.getResources().getDrawable(R.drawable.icon), null, null, null);
     
                    convertView.setTag(holder);
                } else {
     
                    holder = (ListContent) convertView.getTag();
                }
     
     
                holder.text.setText(ListviewContent.get(position));
                holder.text2.setText(ListviewContent.get(position));
                return convertView;
            }
     
            static class ListContent {
               TextView text;
               TextView text2;
     
            }
        }
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ListviewContent.add( "Maison");ListviewContent.add("bateau");
     
            textContent=(EditText)findViewById(R.id.EditText01);
            textContent2=(EditText)findViewById(R.id.EditText02);
            submit=(Button)findViewById(R.id.Button01);
            submit.setOnClickListener(this);
            setListAdapter(new ListViewAdapter(this));
        }
        private static final ArrayList<String> ListviewContent = new ArrayList<>();
        @Override
        public void onClick(View v) {
            if(v==submit)
            {
                MessageFormat.format("{0}{1}", ListviewContent.add(textContent.getText().toString()), textContent2.getText().toString());
              //  final String s = textContent2.getText().toString();
                // ListviewContent.add(textContent2.getText().toString());
                setListAdapter(new ListViewAdapter(this));
            }
     
     
        }
    Merci à vous

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Par défaut
    Citation Envoyé par carus Voir le message
    ...
    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
    public class dynamicListView extends ListActivity implements OnClickListener  {
    
        EditText textContent;
        EditText textContent2;
        Button submit;
        ListView myList;
    
        private static class ListViewAdapter extends BaseAdapter {
            private LayoutInflater mInflater;
    
    
            public ListViewAdapter(Context context) {
    
                mInflater = LayoutInflater.from(context);
    
    
    
            }
            public int getCount() {
                return ListviewContent.size();
            }
            public Object getItem(int position) {
                return position;
            }
            public long getItemId(int position) {
                return position;
            }
            public View getView(int position, View convertView, ViewGroup parent) {
    
                ListContent holder;
    
    
                if (convertView == null) {
                    convertView = mInflater.inflate(R.layout.list_element, null);
    
                    holder = new ListContent();
                    holder.text = (TextView) convertView.findViewById(R.id.TextView01);
                    holder.text2 = (TextView) convertView.findViewById(R.id.TextView02);
                //    holder.text.setCompoundDrawables(convertView.getResources().getDrawable(R.drawable.icon), null, null, null);
    
                    convertView.setTag(holder);
                } else {
    
                    holder = (ListContent) convertView.getTag();
                }
    
    
                holder.text.setText(ListviewContent.get(position));
                holder.text2.setText(ListviewContent.get(position));
                return convertView;
            }
    
            static class ListContent {
               TextView text;
               TextView text2;
    
            }
        }
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ListviewContent.add( "Maison");ListviewContent.add("bateau");
    
            textContent=(EditText)findViewById(R.id.EditText01);
            textContent2=(EditText)findViewById(R.id.EditText02);
            submit=(Button)findViewById(R.id.Button01);
            submit.setOnClickListener(this);
            setListAdapter(new ListViewAdapter(this));
        }
        private static final ArrayList<String> ListviewContent = new ArrayList<>();
        @Override
        public void onClick(View v) {
            if(v==submit)
            {
                MessageFormat.format("{0}{1}", ListviewContent.add(textContent.getText().toString()), textContent2.getText().toString());
              //  final String s = textContent2.getText().toString();
                // ListviewContent.add(textContent2.getText().toString());
                setListAdapter(new ListViewAdapter(this));
            }
        }
    Bonjour,

    Le soucis se trouve au niveau des deux lignes que j'ai mis en rouge. Vous recupérez le même texte et vous l'affectez aux deux TextView,

    puisque ListviewContent.get(position) renvoie la chaîne étant donné que la position

    est la même.

    __salut !

  3. #3
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2015
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2015
    Messages : 96
    Par défaut
    Merci beaucoup,

    Je vois l'utilité de ces phrases.

    Mais je suis complètement paumé, je dois les mettre ou?

    Oui, je sais, pire y a pas ...

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Par défaut
    Citation Envoyé par carus Voir le message
    Merci beaucoup,

    Je vois l'utilité de ces phrases.

    Mais je suis complètement paumé, je dois les mettre ou?

    Oui, je sais, pire y a pas ...
    En fait la position ne gêne pas et je pense même que c'est le bon endroit. Par contre le fait d'avoir utlisé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static final ArrayList<String> ListviewContent = new ArrayList<>();
    ne vous permet pas d'avoir deux textes par ligne. Il s'agit juste d'un tableau à une seul dimension, hors vous avez besoin d'un tableau à deux dimension. Une solution c'est d'utiliser un tableau de Map. Chaque Map étant sensée contenir les données d'une ligne. Fais de la sorte, même si vous voulez milles textes par ligne, çà marche ! Votre tableau dynamique devient donc ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<TreeMap<String,String>> list = new ArrayList<TreeMap<String, String>>();
    L'ajout se fait alors en créant d'abord une carte, ensuite on insère les deux dans la carte et enfin on ajoute la carte dans le tableau dynamique.
    Pour l'affichage également, on recupère la map à partir de sa position, ensuite on récupère chaque texte à partir de sa clé et enfin on affecte le texte aux TextViews.

    __salut !

  5. #5
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2015
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2015
    Messages : 96
    Par défaut
    Houlala ...
    Merci pour la rapide réponse, mais je sens que vous allez m'entrainer du coté archi sombre d'Android.
    Je n'y connais rien des tableau un peu comme les lists mais elles j'ai cherché depuis plusieurs mois déjà.

    J'ai choisi une list, car, je dois récupérer cette liste dans une deuxième activité.
    La couleur du text change en fonction de la réponse (bonne ou fausse).

    En fait, je me fait un quiz perso pour m'aider à apprendre le polonais.
    Déroulement:
    dans une liste un mot est tiré au hasard en français.
    Il s'affiche. (Là il est simulé par le 1er EditText ou text)

    Je réponds en écrivant le mot en polonais ( simulé par le 2ème EditText ou text2)

    La réponse attendue s'affichera dans un 3ème textView ( pas simulé car je maitrise).

    A la fin du questionnaire la liste s'affichera avec toutes les réponses bonnes en Vert, mauvaises en Rouge

    La partie aléatoire, je maitrise
    la partie récap, je maîtrise
    la partie 2ème Activity, je maîtrise peut-être

    encore merci pour votre aide et conseil.

    Je suis toujours débutant même à 65 ans ???

  6. #6
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Par défaut
    Houlala ...
    Merci pour la rapide réponse, mais je sens que vous allez m'entrainer du coté archi sombre d'Android.
    Je n'y connais rien des tableau un peu comme les lists mais elles j'ai cherché depuis plusieurs mois déjà.
    ...
    Je comprend. Je vous propose une autre astuce, si vous tenez à utiliser la liste. Elle est la suivante :

    Nous allons concatener les deux textes dans une seule chaine de caractère, en prenant le soin de les séparer

    par un caractère spécifique( on choisira un caractère qui ne doit jamais apparaître dans un mot polonais ou français

    comme '@' ou ';', ...). Lorsque le besoin sera d'afficher les deux textes, on récupère la chaine de caractère ensuite on

    sépare les deux textes parce que nous aurons une idée du caractère qui les sépare.

    Example à l'ajout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ListviewContent.add( "Maison@Bateau");
    ListviewContent.add( "Programmation@C'est pas dure,c'est complexe!");
    Example à l'affichage dans la méthode getView(....) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String deux_texte = holder.text.setText(ListviewContent.get(position));
    String text1 = deux_texte.substring(0, deux_texte.indexOf("@"));
    String text2 = deux_texte.substring(deux_texte.indexOf("@") + 1);
    
    holder.text.setText(text1);
    holder.text2.setText(text2);
    Vous aurez remarqué que j'ai utilisé le caractère '@' comme séparateur mais vous pouvez utiliser n'importe lequel si vous voulez.

    ____salut !

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

Discussions similaires

  1. Mise à jour d'une listView d'un fragment
    Par Bwg28 dans le forum Composants graphiques
    Réponses: 6
    Dernier message: 12/02/2014, 16h34
  2. Mise à jour d'une ListView via MySQL
    Par pouti dans le forum Composants graphiques
    Réponses: 15
    Dernier message: 14/12/2013, 21h14
  3. Réponses: 0
    Dernier message: 29/01/2011, 17h40
  4. [XL-2007] Mise à jour d'une listview
    Par rvtoulon dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/10/2009, 19h06
  5. Mise à jours d'une ListView contenant un adapter custom
    Par ghostwan dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 19/09/2009, 18h20

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