如何使用while循环来构建字符串数组并将其用作列表

时间:2012-01-13 03:39:42

标签: java android

我正在为同学写一个应用程序,我正在从网站上解析信息。我花了一个人来编写解析器,但做得很差,他想要更多的钱来帮忙了。所以我试着自己解决它。

有一个提取器可以获取xml信息,绅士们是如何拥有它的,是他在main.java中这样称呼的。

      Content1 = extractor.BusRoutes.get(1);
      Content2 = extractor.BusRoutes.get(2);
      Content3 = extractor.BusRoutes.get(3);

但是有30多辆公共汽车,对我来说,这不是一个坚实的想法。所以我尝试做一个while循环和一个数组,以便构建列表并使其成为android中的列表。

 public class BusRoutes extends ListActivity   {

TransitXMLExtractor extractor;


public String[] busroutearray()
{
    extractor = new TransitXMLExtractor();
    String[] busroutearray = new String[40];    
    int n = 0;
    while(n != (busroutearray.length - 1)){
    busroutearray[n] = extractor.BusRoutes.get(n);
    n++;
}
return busroutearray;
}








/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setListAdapter(new ArrayAdapter<String>(this,      android.R.layout.simple_list_item_1, busroutearray()));
    getListView().setTextFilterEnabled(true);
}
当我启动它时,总是会被迫退出。

编辑,之前有n ++,但是在更改代码时被删除了,但是使用n ++它仍然具有相同的效果。

3 个答案:

答案 0 :(得分:0)

问题出在你的while循环中。它正在运行无限循环,因为您不会更改“n”值。

    public String[] busroutearray()
    {
        extractor = new TransitXMLExtractor();
        String[] busroutearray = new String[40];    
        int n = 0;

        for (int n = 0; n < busroutearray.length; n++){
           busroutearray[n] = extractor.BusRoutes.get(n);
        }

    }

答案 1 :(得分:0)

你没有递增n,这是一个无限循环。并且Android多次提出ANR(应用程序无响应)。

int n = 0;
while(n < busroutearray.length){
    busroutearray[n] = extractor.BusRoutes.get(n);
    n++;
}

虽然我不确定,但我认为BusRoutes是某种List String

你为什么不用,

String[] busroutearray = extractor.BusRoutes.toArray(new String[extractor.BusRoutes.size()]);

答案 2 :(得分:0)

您需要递增计数器(n)。所以循环的代码是:

while (n != (busroutearray.length - 1)) {
    busroutearray[n] = extractor.BusRoutes.get(n);
    n++;
}

在这种情况下更好的是for循环(当你想要迭代时,它更容易阅读和理想:

for (int i = 0; n < busroutearray.length; i++) {
    busroutearray[i] = extractor.BusRoutes.get(i);
}

您可能还想探索使用比数组(example)更灵活的不同数据结构。