0

シンプルな foreach-sortof loop を作ろうとしています。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());
            }

しかし、結果は次のようになります。

  • アートン
  • アートン
  • アートン
  • パッケージ名
  • パッケージ名
  • パッケージ名

でも私はしたい :

  • アートン
  • パッケージ名
  • アートン
  • パッケージ名

その結果を得るためにコードをフォーマットするにはどうすればよいですか? 私は完全に無知です:/

4

1 に答える 1

2

繰り返し処理しているオブジェクトが T 型の Collection を拡張する場合、このような foreach ループを実行できます

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

編集:

わかりました、質問は実際にはforeachループに関するものではないようです(このパーサーでintを使用できるとは思いません)が、xmlから要素を間違った順序で取得しているようです。nextTag()代わりにnext()?の使用を検討する必要があるかもしれません。

于 2012-10-15T12:11:47.737 に答える