2015-11-09 2 views
1

Я использую openCSV для чтения файла csv, чтобы раздуть мой автозаполнение для моего приложения для Android. Хотя большинство значений из csv успешно читаются и накачиваются автоматически полным текстовым представлением, некоторые из них «отсутствуют». Например, значение csv «Лос-Анджелес, Калифорния», LAX не читается программой.CSV missing values ​​

Чтение CSV:

public void readCSV() throws IOException { 
     InputStream is = this.getAssets().open("airport-codes.csv"); 
     InputStreamReader ifr = new InputStreamReader(is, "UTF-8"); 

     CSVReader reader = new CSVReader (ifr); 
     ArrayList<String> srd = new ArrayList<>(); 

     while ((reader.readNext()) != null) 
     { 
      nextLine = reader.readNext(); 
      Log.i("ArrivalTest", nextLine[0] + "- " + nextLine[1]); 
      srd.add(nextLine[0] + " - " + nextLine[1]); 

     } 
     reader.close(); 
     autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.originCityAutoComp1); 
     adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, srd); 
     autoCompleteTextView.setAdapter(adapter); 
} 

аэропорт-codes.csv:

... 

"Lorient, France ",LRT 
"Los Angeles, CA ",LAX // Los Angles LAX is in csv file. 
"Los Cabos, Mexico ",SJD 
... 

Logcat:

... 
Longview, TX - GGG 
Lonorore, Vanuatu - LNE 
Lord Howe Island, NS, Australia - LDH 
Lorient, France - LRT 
Los Cabos, Mexico - SJD  // Los Angles LAX is missing. 
Losuia, Papua New Guinea - LSA 
Lourdes/Tarbes, France - LDE 
... 
+1

Полная догадку здесь, но попробуйте проверить окончание строки символов в файле .csv для записи LA, и оба из его записей соседа. – PeteB

+0

@PeteB Спасибо за комментарий. Я принял ваш совет и проверил символы окончания строки (использовал Notepad ++, искал CR и LF в конце каждой записи), но они были правильно перечислены. – user3503916

ответ

3

Ваш цикл, пока прихлебывая каждый нечетные строки данных из CSV файл и выбросить его)

Попробуйте вместо этого:

while ((nextLine = reader.readNext()) != null) 
{ 
    Log.i("ArrivalTest", nextLine[0] + "- " + nextLine[1]); 
    srd.add(nextLine[0] + " - " + nextLine[1]); 
} 
+0

Спасибо, спасибо! Боже, как я был глуп. Теперь это настолько очевидно, что он делал reader.readNext() «дважды» в цикле, и он переводит курсор в каждую другую строку. Ты спас мой день! :) – user3503916

Смежные вопросы