2012-05-18 126 views
3
有一個問題,試圖讓含有的ArrayList在我的計劃工作的一個ArrayList

,即時得到一個奇怪的警告說:添加@SuppressWarnings「零」到processArray(),無論如果我添加此與否我的程序崩潰了,有什麼顯而易見的,我在這裏做錯了嗎?任何幫助會有很大的幫助。ArrayList中的ArrayList

 private ArrayList<ArrayList<String>> processArray(ResponseList<Status> responses){ 

     ArrayList<ArrayList<String>> mainArray = null; 
     ArrayList<String> innerArrays = null; 

     for (Status response: responses){ 
      String name, status, imgUrl, time; 

      name = response.getUser().getName(); 
      status = response.getText(); 
      imgUrl = response.getUser().getProfileImageURL().toString(); 
      time = response.getCreatedAt().toString(); 

      ArrayList<String> rtLinks = checkLinks(response.getText()); 

      if(rtLinks != null){ 

       for (String tLink: rtLinks){ 

        innerArrays.add(name); 
        innerArrays.add(status); 
        innerArrays.add(imgUrl); 
        innerArrays.add(time); 
        innerArrays.add(tLink); 

        mainArray.add(innerArrays); 

       } 

      } 


     } 
    return mainArray; 
+0

「crashes」= ..? – Bozho

+0

學會閱讀錯誤,通常有一個例外名稱,也是一個行號。 – Hidde

回答

5

你從來沒有真正初始化任何一個數組列表。

你想

ArrayList<ArrayList<String>> mainArray = new ArrayList<ArrayList<String>>(); // or new ArrayList<>() in java 7 

內內的循環

ArrayList<String> innerArrays = new ArrayList<String>(); // or new ArrayList<>() in java 7 

而且,永遠不要禁止警告 「只是爲了讓代碼工作」。只有當你確切知道他們出現的原因時,纔會壓制他們,以及你爲什麼選擇忽略他們。

+0

哇我知道這是完全愚蠢的東西!謝謝您的幫助!! –

1

您正在嘗試添加innerArrays變量到主ArrayList中,但是你宣佈你的主要的ArrayList在方法的開頭空。將主ArrayList初始化爲String的ArrayLists的新ArrayList,並且您的代碼應該可以工作。

2

您的程序可能是由於NullPointerException崩潰。當您嘗試訪問值爲null(稱爲解引用空指針)的變量時會發生這種情況。在訪問兩個ArrayList之前,您需要初始化它。嘗試改變這兩行:

ArrayList<ArrayList<String>> mainArray = new ArrayList<ArrayList<String>>(); 
    ArrayList<String> innerArrays = new ArrayList<String>(); 

這應該解決您的直接問題。

不過,我不知道爲什麼你使用的是innerArrays名單都沒有。我將在最後一位重構這樣:

for (String tLink: rtLinks){ 
    ArrayList<String> tempList = new ArrayList<String>(); 
    tempList.add(name); 
    tempList.add(status); 
    tempList.add(imgUrl); 
    tempList.add(time); 
    tempList.add(tLink); 
    mainArray.add(tempList); 
} 

並刪除innerArrays變量。這樣,範圍就會更加有限,並且代碼在邏輯上運行更多。