我正在为同学写一个应用程序,我正在从网站上解析信息。我花了一个人来编写解析器,但做得很差,他想要更多的钱来帮忙了。所以我试着自己解决它。
有一个提取器可以获取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 ++它仍然具有相同的效果。
答案 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)更灵活的不同数据结构。