在Android中等效的foreach循环是什么样的

时间:2019-01-07 10:28:40

标签: android

什么是等效的foreach循环在android java中的样子,我正在将以下代码移植到android.for循环适用于c#。

        foreach (XmlNode candidate in parent.ChildNodes)
        {
            if (candidate is XmlElement && candidate.Name == element.Name)
            {
                if (candidate == element)
                {
                    return index;
                }
                index++;
            }
        }

下面是我的Android函数,该函数在for循环中出现错误:

  private static int FindElementIndex(Element element)
  {
    Node parentNode = element.getParentNode();
    if (parentNode.equals(Node.DOCUMENT_NODE))
    {
        return 1;
    }
    Element parent = (Element)parentNode;
    int index = 1;
    //how should be the foreach of the below to be changed?
    for (Node candidate  : parent.getChildNodes()) {
        if (candidate.equals(Node.ELEMENT_NODE)  && candidate.getNodeName() == element.getNodeName())
        {
            if (candidate == element)
            {
                return index;
            }
            index++;
        }
      }

    Log.d("Log_d","Couldn't find element within parent");
    //throw new ArgumentException("Couldn't find element within parent");
}

2 个答案:

答案 0 :(得分:1)

// parent.ChilNodes是某种类型的大学,例如arraylist

一些更新显示不是foreach

for(XmlNode candidate : parent.ChildNodes)
    {
        if (candidate instanceOf XmlElement && candidate.Name == element.Name)
        {
            if (candidate == element)
            {
                return index;
            }
            index++;
        }
    }

答案 1 :(得分:0)

我更改了函数,并在函数中循环了

 private static int FindElementIndex(Element element)
{
    Node parentNode = element.getParentNode();
    if (parentNode.equals(Node.DOCUMENT_NODE))
    {
        return 1;
    }
    Element parent = (Element)parentNode;
    int index = 1;
    NodeList nodes = parent.getChildNodes();
    for (int k = 0; k < nodes.getLength(); k++) {
       Node  candidate = nodes.item(k);
        if (candidate.equals(Node.ELEMENT_NODE)  && candidate.getNodeName() == element.getNodeName()) {
            return index;
        }
        index++;
    }

    Log.d("Log_d","Couldn't find element within parent");
    //throw new ArgumentException("Couldn't find element within parent");
    return 0;
}