我正在尝试制作一个简单的foreach-sortof循环。看起来Android中没有foreach,但我对如何解决这个问题毫无头绪......
我正在尝试打印出一个信息块,并在每个块上都有新信息..一个简单的循环......
这是我到目前为止所提出的:
while (eventType != XmlPullParser.END_DOCUMENT) {
String[] separated_nodes = node.split(":");
if(eventType == XmlPullParser.START_TAG && xpp.getName().equalsIgnoreCase(tag)) {
if(tag.equals("ChannelPackage")) {
// ArtNr:Name:Price:Period:InitDisPeriod:DisPeriod
// text.setText("Network "+xpp.getAttributeValue(null, "Name"));
packagename += xpp.getAttributeValue(null, separated_nodes[1].trim());
artnr += xpp.getAttributeValue(null, separated_nodes[0].trim());
price += xpp.getAttributeValue(null, separated_nodes[2].trim());
period += xpp.getAttributeValue(null, separated_nodes[3].trim());
initdisperiod += xpp.getAttributeValue(null, separated_nodes[4].trim());
disperiod += xpp.getAttributeValue(null, separated_nodes[5].trim());
text.setText("Channel Packages: \n" + artnr +"\n" +
"Package Name: "+ packagename + "\n" +
"Price : "+ price +"\n" +
"Period: "+ period +"\n" +
"InitDisPeriod: "+ initdisperiod +"\n" +
"DisPeriod: "+ disperiod +"\n"
);
text.setMovementMethod(new ScrollingMovementMethod());
}
} else if(eventType == XmlPullParser.END_TAG && xpp.getName().equalsIgnoreCase(tag)) {
System.out.println("End tag "+xpp.getName());
}
eventType = xpp.next();
}
// text.setText(nodes.toString());
}catch(Exception ex){
text.setText("Failed!");
Log.i("HTTPResponse", ex.toString());
}
但结果是这样的:
但我想:
如何格式化我的代码以获得该结果?我完全无能为力:/
答案 0 :(得分:2)
如果你正在迭代的对象扩展了类型为T的Collection,你可以像这样做一个foreach循环
for(T obj : someCollection) {
// do something
}
编辑:
好吧,在我看来,问题并不是关于foreach循环(我不认为你可以使用这个解析器的int),而是你从错误的顺序获取xml中的元素。也许您应该考虑使用nextTag()
代替next()
?