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

标签 java android xml

我正在尝试制作一个简单的 foreach-sortof 循环。 Android 中似乎不存在 foreach,但是我不知道如何解决这个问题......

我正在尝试打印出一个信息 block ,并且每个 block 上都有新信息..一个简单的循环...

这是我到目前为止想到的:

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());
            }

但是结果是这样的:

  • 艺术编号
  • 艺术编号
  • 艺术编号
  • 包名
  • 包名
  • 包名

但我想要:

  • 艺术编号
  • 包名
  • 艺术编号
  • 包名

我如何格式化我的代码以获得该结果?我完全一无所知:/

最佳答案

如果您要迭代的对象扩展了 T 类型的 Collection,您可以像这样执行 foreach 循环

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

编辑:

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

关于java - 在 Android 中重现一个简单的 Foreach 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12894909/

相关文章:

android - 按钮上的奇怪异常

android - 无法在android中的两个蓝牙设备之间发送文本数据?

.net - 性能:XDocument 与 XmlDocument

xml - 如何使用重复的 XMLNodes 反序列化此 xml

android - 如何创建方形按钮(90度角)Android Studio

Java 7 更新 25 崩溃

java - HQL:条件查询内的划分

java - 当指定多个数据源时,从 spring 注入(inject)/ Autowiring 数据源

java - 我该如何调试这个 IE7 问题?

android - 不调用 AsyncTask 的 onPostExecute 方法