2012-05-18 87 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变量。这样,范围就会更加有限,并且代码在逻辑上运行更多。