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 :

Utiliser les données d'un fichier CSV


Sujet :

Android

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Utiliser les données d'un fichier CSV
    Bonjour,

    Je débute en programmation sur Android et j'aimerais créer une liste à cocher de pays, lesquels proviendraient d'un fichier pays.csv que j'ai placé dans mon dossier principal.

    Quelqu'un saurait-il m'indiquer comment faire pour que mon programme aille piocher la liste des pays dans mon fichier csv et qu'il les affiche ans une liste à cocher?

    Merci pour vos réponses

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java / C++
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java / C++

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Points : 228
    Points
    228
    Par défaut
    Bonsoir Mirelvi,

    Concernant la récupération de ton fichier csv, je te conseille de le placer dans le répertoire "assets" de ton projet. Ainsi, en utilisant l'AssetsManager tu pourra le récupérer sans problème.

    Concernant l'ajout des différents nom de pays dans une ListeView, tu peut créer ton propre adapter qui se chargera de faire le lien entre les données et la ListView. Cet adapter renverra une CheckBox par exemple, permettant ainsi de sélectionner un pays.
    Pensez à lire les règles du forum avant de poster.

    Si un poste ou un commentaire vous a été utile, merci de mettre un petit !
    Problème résolu? alors pensez à cliquer sur .
    Si vous avez trouvé la solution tout seul, merci de la poster, ça pourrait aider les suivants!

    Bonjour, s'il vous plaît et merci => ses mots ne coûtent rien, mais ils font toujours plaisirs!

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Déjà merci pour la réponse =) je commençais à désespérer...

    Je débute tout juste dans la programmation alors j'aimerai bien avoir plus de détails par rapport à ton explication..

    J'ai effectivement placé mon fichier pays.csv dans le dossier assets.

    A partir de là, comment compléter ma classe que j'ai appelé Localisation?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import java.io.FileReader;
    import java.util.List;
     
    public class Localisation {
     
    }
    Merci

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Mirelvi Voir le message
    J'ai effectivement placé mon fichier pays.csv dans le dossier assets.
    Après quelques recherches je suis tombée sur le bout de code suivant qui correspond à ce que tu me dis:

    AssetManager am = context.getAssets();
    InputStream is = am.open("payx.csv");

    Mais quand je rajoute cette partie, j'ai "context" qui est souligné avec comme proposition: Create field Context/Create class Context/etc..donc Porblème, je ne sais pas quoi faire du coup..

  5. #5
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Il faut récupérer un contexte... Context...

    Si tu regardes la documentation de Context:
    http://developer.android.com/referen...t/Context.html

    Tu verras une liste de classes qui implémentent cette notion... A toi de trouver un objet accessible d'un type de cette liste.
    A noter que "quick-type-hierarchie" dans eclipse permet d'avoir dynamiquement la même information.

    Les plus intéressants sont bien sur "Activity", "Application", "Service" (qui sont donc des "ContextWrapper"s).
    Mais si tu as une "View", tu as un contexte: View.getContext() ....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  6. #6
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Ok, dans mon cas, j'ai ma classe Localisation extends Activity. Du coup je j'ai modifié par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AssetManager am = Activity.getContext.getAssets();
    Pourtant j'ai toujours le même problème pour getContext: cannot be resolved or is not a field...

  7. #7
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    hmmm... il va falloir réviser le concept d'héritage

    Si l'objet qui exécute le code en question hérite lui même de Activity, alors *c'est* un concept (hérite de == EST UN)

    Donc si l'objet lui-même est un contexte, le "context" c'est "this"...

    Donc écrire simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AssetManager am = this.getAssets();
    ou encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AssetManager am = getAssets();
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  8. #8
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Huum...

    Je ne vois pas trop car en faisant des recherches, j'ai vu qu'il fallait utiliser des fichiers java notamment CSVReader ou CSVFile qui regroupent des méthodes nécessaires à l'ouverture de mon fichier.

    Pour le coup je dispose d'une classe CSVFile(que j'ai recopié au bas du message), et à partir de là je n'arrive toujours pas à afficher les données de mon fichier csv dans ma classe Localisation...HELP

    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
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    public class CSVFile {
     
       private int m_rowsCount;
       private int m_colsCount;
       private Vector m_fileContent;
       private final static char CELL_SEPARATOR = ';';
     
       /**
        * Method CSVFile.
        * @param path le chemin du fichier à parser.
        * @throws FileNotFoundException si le fichier spécifié n'existe pas.
        */
       public CSVFile(String path) throws FileNotFoundException {
          m_fileContent = new Vector();
          FileReader fileReader;
    	try {
    		fileReader = new FileReader(path);
    	} catch (FileNotFoundException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
       }
     
       /**
        * Method CSVFile.
        * @param reader un reader dans lequel on lit le fichier CSV.
        */
       public CSVFile(Reader reader) {
          m_fileContent = new Vector();
          readFromFile(reader);
          fitVectorsToSize();
       }
     
       private void fitVectorsToSize() {
          m_fileContent.setSize(getRowsCount());
          int fileSize = getRowsCount();
          int colCount = getColsCount();
          for (int i = 0; i < fileSize; i++) {
             Vector aRow = (Vector)m_fileContent.get(i);
             if (aRow == null) {
                m_fileContent.set(i, new Vector());
                aRow = (Vector)m_fileContent.get(i);
             }
             aRow.setSize(colCount);
          }
       }
     
       /**
        * Method readFromFile.
        * @param path
        */
       private void readFromFile(Reader reader) {
          BufferedReader buffReader = new BufferedReader(reader);
          if (buffReader != null) {
             try {
                String tempLine;
                tempLine = buffReader.readLine();
                while (tempLine != null) {
                   readFromLine(tempLine);
                   tempLine = buffReader.readLine();
                }
             } catch (IOException e) {
                System.err.println("Error reading CSV file: " + e.toString());
             } finally {
                try {
                   buffReader.close();
                } catch (IOException e) {
                   System.err.println(
                      "Erreur closing CSV file: "
                      + e.toString()
                   );
                }
             }
          }
          System.runFinalization();
          System.gc();
       }
     
       /**
        * Method readFromLine.
        * @param tempLine
        */
       private void readFromLine(String tempLine) {
          if (tempLine == null) {
             return;
          }
          Vector currentLine = new Vector();
          m_fileContent.add(currentLine);
          m_rowsCount++;
    //      setRowsCount(getRowsCount() + 1);
          if (tempLine.trim().length() == 0) {
             return;
          }
          int colCount = 0;
          int cursorBegin = 0;
          int cursorEnd = tempLine.indexOf(CELL_SEPARATOR);
          while (cursorBegin > -1) {
             if (cursorEnd == -1) {
                currentLine.add(tempLine.substring(cursorBegin));
                cursorBegin = cursorEnd;
             } else {
                currentLine.add(tempLine.substring(cursorBegin, cursorEnd));
                cursorBegin = cursorEnd + 1;
             }
             cursorEnd = tempLine.indexOf(CELL_SEPARATOR, cursorBegin);
             colCount++;
          }
          if (colCount > getColsCount()) {
             setColsCount(Math.max(getColsCount(), colCount));
          }
       }
     
     
       /**
        * Returns the colsCount.
        * @return int
        */
       public int getColsCount() {
          return m_colsCount;
       }
     
       /**
        * Returns the rowsCount.
        * @return int
        */
       public int getRowsCount() {
          return m_rowsCount;
       }
     
       /**
        * Sets the colsCount.
        * @param colsCount The colsCount to set
        */
       public void setColsCount(int colsCount) {
          m_colsCount = colsCount;
          fitVectorsToSize();
       }
     
       /**
        * Sets the rowsCount.
        * @param rowsCount The rowsCount to set
        */
       public void setRowsCount(int rowsCount) {
          m_rowsCount = rowsCount;
          fitVectorsToSize();
       }
     
       /**
        * Method getData.
        * @param row la ligne voulue
        * @param col la colonne voulue
        * @return String la valeur à l'enplacement spécifié. Null si outOfBound.
        */
       public String getData(int row, int col) {
          if (row < 0
             || col < 0
             || row > (getRowsCount() - 1)
             || col > (getColsCount() - 1)) {
             return null;
          }
          try {
             Vector theRow = (Vector)m_fileContent.get(row);
             String result = (String)theRow.get(col);
             return (result == null ? "" : result);
          } catch (IndexOutOfBoundsException e) {
             return "";
          }
       }
     
       /**
        * Method setData.
        * @param row le numéro de ligne (commence à 0).
        * @param col le numéro de colonne (commence à 0).
        * @param data les données à insérer.
        */
       public void setData(int row, int col, String data) {
          if (row < 0
             || col < 0
             || row > (getRowsCount() - 1)
             || col > (getColsCount() - 1)) {
             throw new IndexOutOfBoundsException();
          }
          Vector theRow = (Vector)m_fileContent.get(row);
          theRow.setElementAt(data, col);
       }
     
       /**
        * Method write.
        * @param filePath le fichier dans lequel sauver les données.
        * @throws IOException si une erreur survient.
        */
       public void write(String filePath) throws IOException {
          FileWriter fileWriter = new FileWriter(filePath);
          write(fileWriter);
       }
     
       /**
        * Method write.
        * @param aWriter le writer dans lequel on veut écrire les données.
        * @throws IOException si une erreur survient.
        */
       public void write(Writer aWriter) throws IOException {
          BufferedWriter writer;
          writer = new BufferedWriter(aWriter);
          int fileSize = getRowsCount();
          int colCount = getColsCount();
          for (int i = 0; i < fileSize; i++) {
             for (int j = 0; j < colCount; j++) {
                writer.write(getData(i, j));
                if (j + 1 < colCount) {
                   writer.write(CELL_SEPARATOR);
                }
             }
             if (i + 1 < fileSize) {
                writer.write("\n");
             }
          }
          writer.flush();
          writer.close();
       }

  9. #9
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Déjà... j'essaierai de trouver un autre CSVFile, celui là me semble n'importe quoi... (pas d'escaping lors du write, pas de un-escaping lors du read, gestion de ';' uniquement alors que cela est spécifique à Excel en Français, utilisation de Vector (generic-less), mauvaise propagation des exceptions,...).

    Enfin bref... il y a moyen de trouver dans les apache libraries des utilitaires CSV bien mieux programmés.

    Ensuite, la manière de lire le fichier ne change en rien la manière d'y accéder (ce qui était le premier message).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  10. #10
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    D'accord, donc j'ai trouvé d'autres fichiers contenant des méthodes utiles à la lecture d'un fichier csv (CSVReader, CSVParser et CSVWriter)
    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
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    public class CSVReader implements Closeable {
     
        private BufferedReader br;
     
        private boolean hasNext = true;
     
        private CSVParser parser;
     
        private int skipLines;
     
        private boolean linesSkiped;
     
        /**
         * The default line to start reading.
         */
        public static final int DEFAULT_SKIP_LINES = 0;
     
        /**
         * Constructs CSVReader using a comma for the separator.
         * 
         * @param reader
         *            the reader to an underlying CSV source.
         */
        public CSVReader(Reader reader) {
            this(reader, CSVParser.DEFAULT_SEPARATOR, CSVParser.DEFAULT_QUOTE_CHARACTER, CSVParser.DEFAULT_ESCAPE_CHARACTER);
        }
     
        /**
         * Constructs CSVReader with supplied separator.
         * 
         * @param reader
         *            the reader to an underlying CSV source.
         * @param separator
         *            the delimiter to use for separating entries.
         */
        public CSVReader(Reader reader, char separator) {
            this(reader, separator, CSVParser.DEFAULT_QUOTE_CHARACTER, CSVParser.DEFAULT_ESCAPE_CHARACTER);
        }
     
        /**
         * Constructs CSVReader with supplied separator and quote char.
         * 
         * @param reader
         *            the reader to an underlying CSV source.
         * @param separator
         *            the delimiter to use for separating entries
         * @param quotechar
         *            the character to use for quoted elements
         */
        public CSVReader(Reader reader, char separator, char quotechar) {
            this(reader, separator, quotechar, CSVParser.DEFAULT_ESCAPE_CHARACTER, DEFAULT_SKIP_LINES, CSVParser.DEFAULT_STRICT_QUOTES);
        }
     
        /**
         * Constructs CSVReader with supplied separator, quote char and quote handling
         * behavior.
         *
         * @param reader
         *            the reader to an underlying CSV source.
         * @param separator
         *            the delimiter to use for separating entries
         * @param quotechar
         *            the character to use for quoted elements
         * @param strictQuotes
         *            sets if characters outside the quotes are ignored
         */
        public CSVReader(Reader reader, char separator, char quotechar, boolean strictQuotes) {
            this(reader, separator, quotechar, CSVParser.DEFAULT_ESCAPE_CHARACTER, DEFAULT_SKIP_LINES, strictQuotes);
        }
     
       /**
         * Constructs CSVReader with supplied separator and quote char.
         *
         * @param reader
         *            the reader to an underlying CSV source.
         * @param separator
         *            the delimiter to use for separating entries
         * @param quotechar
         *            the character to use for quoted elements
         * @param escape
         *            the character to use for escaping a separator or quote
         */
     
        public CSVReader(Reader reader, char separator,
    			char quotechar, char escape) {
            this(reader, separator, quotechar, escape, DEFAULT_SKIP_LINES, CSVParser.DEFAULT_STRICT_QUOTES);
    	}
     
        /**
         * Constructs CSVReader with supplied separator and quote char.
         * 
         * @param reader
         *            the reader to an underlying CSV source.
         * @param separator
         *            the delimiter to use for separating entries
         * @param quotechar
         *            the character to use for quoted elements
         * @param line
         *            the line number to skip for start reading 
         */
        public CSVReader(Reader reader, char separator, char quotechar, int line) {
            this(reader, separator, quotechar, CSVParser.DEFAULT_ESCAPE_CHARACTER, line, CSVParser.DEFAULT_STRICT_QUOTES);
        }
     
        /**
         * Constructs CSVReader with supplied separator and quote char.
         *
         * @param reader
         *            the reader to an underlying CSV source.
         * @param separator
         *            the delimiter to use for separating entries
         * @param quotechar
         *            the character to use for quoted elements
         * @param escape
         *            the character to use for escaping a separator or quote
         * @param line
         *            the line number to skip for start reading
         */
        public CSVReader(Reader reader, char separator, char quotechar, char escape, int line) {
            this(reader, separator, quotechar, escape, line, CSVParser.DEFAULT_STRICT_QUOTES);
        }
     
        /**
         * Constructs CSVReader with supplied separator and quote char.
         * 
         * @param reader
         *            the reader to an underlying CSV source.
         * @param separator
         *            the delimiter to use for separating entries
         * @param quotechar
         *            the character to use for quoted elements
         * @param escape
         *            the character to use for escaping a separator or quote
         * @param line
         *            the line number to skip for start reading
         * @param strictQuotes
         *            sets if characters outside the quotes are ignored
         */
        public CSVReader(Reader reader, char separator, char quotechar, char escape, int line, boolean strictQuotes) {
            this(reader, separator, quotechar, escape, line, strictQuotes, CSVParser.DEFAULT_IGNORE_LEADING_WHITESPACE);
        }
     
        /**
         * Constructs CSVReader with supplied separator and quote char.
         * 
         * @param reader
         *            the reader to an underlying CSV source.
         * @param separator
         *            the delimiter to use for separating entries
         * @param quotechar
         *            the character to use for quoted elements
         * @param escape
         *            the character to use for escaping a separator or quote
         * @param line
         *            the line number to skip for start reading
         * @param strictQuotes
         *            sets if characters outside the quotes are ignored
         * @param ignoreLeadingWhiteSpace
         *            it true, parser should ignore white space before a quote in a field
         */
        public CSVReader(Reader reader, char separator, char quotechar, char escape, int line, boolean strictQuotes, boolean ignoreLeadingWhiteSpace) {
            this.br = new BufferedReader(reader);
            this.parser = new CSVParser(separator, quotechar, escape, strictQuotes, ignoreLeadingWhiteSpace);
            this.skipLines = line;
        }
     
       /**
         * Reads the entire file into a List with each element being a String[] of
         * tokens.
         * 
         * @return a List of String[], with each String[] representing a line of the
         *         file.
         * 
         * @throws IOException
         *             if bad things happen during the read
         */
        public List<String[]> readAll() throws IOException {
     
            List<String[]> allElements = new ArrayList<String[]>();
            while (hasNext) {
                String[] nextLineAsTokens = readNext();
                if (nextLineAsTokens != null)
                    allElements.add(nextLineAsTokens);
            }
            return allElements;
     
        }
     
        /**
         * Reads the next line from the buffer and converts to a string array.
         * 
         * @return a string array with each comma-separated element as a separate
         *         entry.
         * 
         * @throws IOException
         *             if bad things happen during the read
         */
        public String[] readNext() throws IOException {
     
        	String[] result = null;
        	do {
        		String nextLine = getNextLine();
        		if (!hasNext) {
        			return result; // should throw if still pending?
        		}
        		String[] r = parser.parseLineMulti(nextLine);
        		if (r.length > 0) {
        			if (result == null) {
        				result = r;
        			} else {
        				String[] t = new String[result.length+r.length];
        				System.arraycopy(result, 0, t, 0, result.length);
        				System.arraycopy(r, 0, t, result.length, r.length);
        				result = t;
        			}
        		}
        	} while (parser.isPending());
        	return result;
        }
     
        /**
         * Reads the next line from the file.
         * 
         * @return the next line from the file without trailing newline
         * @throws IOException
         *             if bad things happen during the read
         */
        private String getNextLine() throws IOException {
        	if (!this.linesSkiped) {
                for (int i = 0; i < skipLines; i++) {
                    br.readLine();
                }
                this.linesSkiped = true;
            }
            String nextLine = br.readLine();
            if (nextLine == null) {
                hasNext = false;
            }
            return hasNext ? nextLine : null;
        }
     
        /**
         * Closes the underlying reader.
         * 
         * @throws IOException if the close fails
         */
        public void close() throws IOException{
        	br.close();
        }
     
    }
    Avec ça je pense être bien équipée

    Maintenant, dans ma classe Localisation, je veux utiliser la partie suivante (issue de CSVReader):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public List<String[]> readAll() throws IOException {
     
            List<String[]> allElements = new ArrayList<String[]>();
            while (hasNext) {
                String[] nextLineAsTokens = readNext();
                if (nextLineAsTokens != null)
                    allElements.add(nextLineAsTokens);
            }
            return allElements;
     
        }
    qui me permettrait d'afficher les données de mon fichier csv.

    Du coup je pars sur:

    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
     
     
    public class Localisation extends Activity {
     
        String next[] = {};
        List<String[]> list = new ArrayList<String[]>();
     
        try {
            CSVReader reader = new CSVReader(new InputStreamReader(getAssets().open("pays.csv")));
            for(;;) {
                next = reader.readNext();
                if(next != null) {
                    list.add(next);
                } else {
                    break;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    Pourtant j'ai encore des soucis dans mon code...

  11. #11
    Membre actif
    Homme Profil pro
    Développeur Java / C++
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java / C++

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Points : 228
    Points
    228
    Par défaut
    Bonjour Mirelvi,

    Au vue du code que tu nous fournis, je pense que tu as grand besoin de faire les cours de Java pour débutant sur ce site. Parce que ç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
     
    public class Localisation extends Activity {
     
        String next[] = {};
        List<String[]> list = new ArrayList<String[]>();
     
        try {
            CSVReader reader = new CSVReader(new InputStreamReader(getAssets().open("pays.csv")));
            for(;;) {
                next = reader.readNext();
                if(next != null) {
                    list.add(next);
                } else {
                    break;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    Je ne sais pas si c'est fait exprès ou pas, mais c'est juste inacceptable. ça doit être souligné de partout là non?

    Tu as déjà programmé avant de te lancé dans ton application?

    Ensuite, lorsque l'on souhaite utiliser un fichier quel qu'il soit, il faut impérativement bien comprendre sa structure. Le fichier CSV (Comm Separated Value = Séparateur à Valeur Commune), permet de stocker les données "sous forme de tableau", les colonnes étant délimitée par le séparateur commun. Donc, il faut que tu donne au CSVReader le caractère séparateur (tabulation, point-virugle, espace....).

    Et quitte à utiliser le CSVReader, autant l'utiliser complètement, un peut dans ce style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    List<String[]> list;
     
    CSVReader reader = new CSVReader(new InputStreamReader(getAssets().open("pays.csv")), ';'); // ici le point-virgule c'est pour l'exemple, il faut que tu utililse celui qui est dons ton fichier
    list = reader.readAll();
    Pensez à lire les règles du forum avant de poster.

    Si un poste ou un commentaire vous a été utile, merci de mettre un petit !
    Problème résolu? alors pensez à cliquer sur .
    Si vous avez trouvé la solution tout seul, merci de la poster, ça pourrait aider les suivants!

    Bonjour, s'il vous plaît et merci => ses mots ne coûtent rien, mais ils font toujours plaisirs!

  12. #12
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Oups En effet, je n'ai jamais programmé en Java donc c'est peut être un peu précipité...

    J'ai pas trop de notions donc j'essaie de trouver des petits bouts de code par ci par là et les adapter à ce que je veux..c'est pas un choix très judicieux je l'avoue.. Du coup entre temps (depuis) hier j'ai fais des modifs sur mon code et je l'ai remplacé par celui là:
    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 Localisation extends Activity {
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.localisation);
        Button pays=(Button) findViewById (R.id.bPays);
        pays.setOnClickListener(new View.OnClickListener() {
     
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
     
                List<String> COUNTRIES     = new ArrayList<String>();
                InputStream is = null;
                try {
     
                    is = getAssets().open("countryCodeList.csv");
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                    String line;
                    while ((line = reader.readLine()) != null) {
                        COUNTRIES.add(line);
     
                    }
                } catch (IOException ex) {
                	ex.printStackTrace();
                } 
        };
    });
    }
    }
    Et là je confirme que rien n'est souligné héhé...Pourtant...Rien ne s'affiche lorsque j'appuie sur mon bouton pays

  13. #13
    Membre actif
    Homme Profil pro
    Développeur Java / C++
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java / C++

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Points : 228
    Points
    228
    Par défaut
    Oui ce n'est même pas judicieux du tout, se serais vraiment bien que tu fasse quelques cours, tu gagnerais beaucoup de temps.

    Ton code est un peu mieux, mais comme dit dans mon précédent poste, utilise le CSVReader complètement, comme ça, ça te simplifie la vie; en deux lignes de code tu fait la même chose que ce que tu as écrit .

    Ensuite, il ne reste plus qu'à utiliser un ArrayAdapter pour faire le lien entre ta liste de donnée et ta ListView .
    Pensez à lire les règles du forum avant de poster.

    Si un poste ou un commentaire vous a été utile, merci de mettre un petit !
    Problème résolu? alors pensez à cliquer sur .
    Si vous avez trouvé la solution tout seul, merci de la poster, ça pourrait aider les suivants!

    Bonjour, s'il vous plaît et merci => ses mots ne coûtent rien, mais ils font toujours plaisirs!

  14. #14
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Je vais essayer en espérant que ça marche..Merci!

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/02/2012, 09h29
  2. Réponses: 1
    Dernier message: 09/01/2012, 14h49
  3. Réponses: 5
    Dernier message: 22/06/2009, 23h10
  4. [MySQL] Importer les données d'un fichier CSV dans une base de données
    Par joueur dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/11/2008, 11h59
  5. Sauvegarder les données dans un fichier CSV
    Par beb30 dans le forum MFC
    Réponses: 5
    Dernier message: 08/03/2006, 13h06

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