2012-08-26 63 views
0

我想讀取一個CSV文件,並讓它顯示內容作爲Android應用程序的基本列表。我正在使用Kopfgeldjaeger in this thread給出的方法。發送字符串到烤麪包

我已經加入了幾個「祝酒詞」,這要麼顯示「成功」或「失敗」在Android的屏幕底部如果代碼管理(或沒有管理)的加載CSV文件正確。見下:

try { 
     CSVReader reader = new CSVReader(new InputStreamReader(getAssets().open("file.csv"))); 
     for(;;) { 
      next = reader.readNext(); 
      if(next != null) { 
       list.add(next); 
      } else { 
       break; 
      } 
     } 
     Toast.makeText(getApplicationContext(), "SUCCESS", 
       Toast.LENGTH_SHORT).show(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     Toast.makeText(getApplicationContext(), "FAIL", 
       Toast.LENGTH_SHORT).show(); 
    } 

當我加載的應用程序,我得到'成功'的消息,所以一切都很好。現在,我想看看我是否可以加載任何數據。在Kopfgeldjaeger的答案,建議我可以用下面的代碼訪問的字符串:

list.get(1)[1] 

因此,以檢查它的工作,我嘗試生成另一個敬酒,如下:

 Toast.makeText(getApplicationContext(), list.get(1)[1], 
       Toast.LENGTH_SHORT).show(); 

添加的烤麪包會導致程序無法正常加載。問題是,我得到吐司語法錯誤,還是我的CSV文件加載不正確?

+0

您是否嘗試過了'list.get改變(1)[1]''到列表。得到(0)[0]'? – Wroclai

+1

嘗試進入調試模式並逐行調試代碼。這樣你會知道列表是否仍然爲空或實際填充。 – Avinash

+2

在for循環中嘗試每個列表項的sys.out()。此外,循環完成後檢查,有多少列表項(list.size())。另外,嘗試在這裏放一些logcat消息來查找是否拋出ArrayIndexOutOfBounds異常或其他東西? – rahul

回答

0

有幾件事情要檢查:

  1. 確保您的CSV文件的大小至少爲2×2個的條目,否則檢索從行索引1和列索引的數據1不會工作。例如,打印或調試list.size()list.get(0).length以查看它們是否都至少爲2.
  2. 確認您的csv文件實際上是逗號分隔,而不是例如。分號分隔。我曾見過某些軟件似乎選擇了自己的分隔符的偶爾。

作爲推薦:引用的csv閱讀器是ByteCode's OpenCSV的一部分。您可能希望包含該項目的最新源代碼或jar。它支持自定義的分隔符,並且還提供了一個簡寫爲所有的CSV數據解析成字符串數組列表:

CSVReader reader = new CSVReader(new FileReader("yourfile.csv")); 
List myEntries = reader.readAll(); 
+0

非常感謝,這是我的CSV文件被製表符分隔,而不是逗號分隔的情況。所以,它加載了一個1維向量並試圖讀取參考文獻[1,1](或者[2,2])。我已將CSV文件的格式更改爲正確的標準。 – CaptainProg