2012-10-15 62 views
0

我想做一個簡單的foreach-sortof循環。它似乎並沒有在Android中存在,但我無能爲力,如何解決這個問題...在Android中重現一個簡單的Foreach循環?

我想打印出一個信息塊,並在每個塊theres新信息..一個簡單的循環.. 。

這就是我想出迄今:

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物品
  • 包名

我該如何格式化我的代碼才能獲得該結果?我完全無言以對:/

+0

「packagename =」而不是「packagename + =」 – auselen

+0

這給了我1個結果(xml-string中的最後一個結果),我希望它循環。 – DreamHawk

回答

2

如果你遍歷對象擴展類型T的集合,你可以做一個foreach循環這樣

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

編輯:

好吧,在我看來,這個問題並不是真的關於foreach循環(我不認爲你可以使用int來解析這個解析器),但是你會以錯誤的順序從你的xml中獲取元素。也許你應該考慮使用nextTag()而不是next()

+0

爲此,我必須爲這裏的所有字符串變量(或)做一個for()嗎? – DreamHawk

+0

我不知道我明白你的意思,並仔細閱讀你的代碼後,我不知道你想要迭代(是'separated_nodes'?)。你能澄清這個問題嗎? – pablochan

+0

我已經添加了更多的代碼,我想我只需要if-block :)。我想用.setText創建1個文本塊。遍歷每個tag.equals(「ChannelPackage」)並打印出來。 – DreamHawk