2016-12-06 23 views
1

OpenCSVを使用して、デバイスの内部ストレージに保存されているのCSVファイルをproduct.csvという名前で読み取っています。このファイルには、ランダムな製品名の列が1つ含まれています。私は各製品をArrayListに保存したいが、私のコードは機能していない。fom CSVを読み込んでArrayListにデータを保存する

は、ここでは、コードです:メソッドが呼び出された後

String baseDirectory = android.os.Environment.getExternalStorageDirectory().getAbsolutePath(); 
File readCsvFolder = new File(baseDirectory + File.separator + "G Shop" + File.separator + "Input CSV" + File.separator); 
String readFileName; 
String readFilePath; 
List<String[]> readData; 

void readCSV() { 
    readCsvFolder.mkdirs(); 

    readFileName = "products.csv"; 
    readFilePath = readCsvFolder.getPath() + File.separator + readFileName; 
    try { 
     ArrayList<String> searchProducts = new ArrayList<>(); 

     readData = new ArrayList<String[]>(); 
     CSVReader reader = new CSVReader(new FileReader(readFilePath)); 
     readData = reader.readAll(); 

     String[] row; 
     while ((row = reader.readNext()) != null) { 
      searchProducts.add(row[0]); 

      //This Toast never shows up! 
      Toast.makeText(mainActContext,"Saved : " + row[0],Toast.LENGTH_SHORT).show(); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

私はエラーや警告を参照していない、単に出力はありません。私は非常に助けや提案の任意の並べ替えに感謝します:)

+4

what's:readData = reader.readAll();すべてのデータが読み込まれていますか? –

+0

@ user3380739うん、それが問題の原因だった。 その行を削除した後、コードは完全に実行されました。 ところで、遅く返事をして申し訳ありません、私は最近少し忙しされており、また非常に感謝します! –

答えて

2

readData = reader.readAll();ファイルの終わりまで、ファイル全体の入力ストリームを読み込んでいます。したがって、row = reader.readNext()) != nullはあなたに何も与えないだろう。リーダーは既にファイルの最後に達しています。代わりに、ループは単純に次のようになります。for(String[] row:readData)

for(String[] row:readData) { 
    searchProducts.add(row[0]); 

    //Now the toast shows up! 
    Toast.makeText(mainActContext,"Saved : " + row[0],Toast.LENGTH_SHORT).show(); 
} 
関連する問題