在Android中重现一个简单的Foreach循环?

时间:2012-10-15 11:42:57

标签: java android xml

我正在尝试制作一个简单的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());
            }

但结果是这样的:

  • Artnr
  • artnr物品
  • artnr物品
  • PACKAGENAME
  • PACKAGENAME
  • PACKAGENAME

但我想:

  • artnr物品
  • PACKAGENAME
  • artnr物品
  • PACKAGENAME

如何格式化我的代码以获得该结果?我完全无能为力:/

1 个答案:

答案 0 :(得分:2)

如果你正在迭代的对象扩展了类型为T的Collection,你可以像这样做一个foreach循环

for(T obj : someCollection) {
    // do something
}

编辑:

好吧,在我看来,问题并不是关于foreach循环(我不认为你可以使用这个解析器的int),而是你从错误的顺序获取xml中的元素。也许您应该考虑使用nextTag()代替next()