OpenCSV — читать всю строку

#csv #opencsv

#csv #opencsv

Вопрос:

У меня проблема с java librairie OpenCSV. Мне не удалось прочитать всю строку моего CSV-файла, я прочитал только вторую строку, я не знаю почему…

Мой файл CSV :

     "NumACLEB","Nom","Prenom","Niveau","Telephone","Portable","Rue","Code Postale","Ville","Activite","Adresse Mail","Cotisation Acleb","Cotisation Adherent"
"0","Pierre","Paul","Jacques","0585987445","0187458596","tests","92569","PARIS","POKER","test@test.fr","14","11"
"0","Julie","Julie","Beginner","0878589632","1445856996","test3","93857","PAris","POKER","foo@foo.fr","14","11"
  

Я использую OpenCSV для создания списка Android, и только строка «Джули» «Джули» добавляется 3 раза…

 try
        {
            CSVReader csvReader = new CSVReader(new FileReader(SettingsActivity.SaveFolder "PDF/Liste_Membres.csv"),'t');
            //List<String[]> content = csvReader.readAll();
            String[] row = csvReader.readNext();
            while(row != null) 
            {
                if(row[1]!="Nom")
                {
                    map.put("viewname", row[1] "  " row[2]);
                    map.put("viewDetails", "Ville : " row[8] " Cotisation ACLEB : " row[11] "€ Cotisation poker : " row[12] "€");
                    map.put("img", String.valueOf(R.drawable.aclebapc_logo));
                    listItem.add(map);
                }else
                {
                    map.put("viewname", "NOM    Prenom");
                    map.put("viewDetails", "Ville   -  Cotisation ACLEB   -    Cotisation poker");
                    map.put("img", String.valueOf(R.drawable.aclebapc_logo));
                    listItem.add(map);
                }
                row = csvReader.readNext();
            }
        }catch(IOException ex)
        {
            Context context = getApplicationContext();
            CharSequence text = "Erreur lors de l'ouverture du fichier CSV...";
            int duration = Toast.LENGTH_SHORT;
            Toast toast = Toast.makeText(context, text, duration);
            toast.show();
        }
  

Ответ №1:

Я так понимаю, это map какой-то словарь? Когда вы снова и снова вводите значения в одни и те же ключи, предыдущее значение перезаписывается.

Я рекомендую другую структуру данных, основанную на проблеме, которую вы пытаетесь решить.

Ответ №2:

Beautifulcoder попал в точку. Вы используете один и тот же ключ для каждого значения, которое вы вставляете в карту, поэтому вы перезаписываете все и увидите только последний элемент, который вы поместили на карту