diff --git a/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlElement.java b/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlElement.java index f4ce6ef..57bc0fe 100755 --- a/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlElement.java +++ b/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlElement.java @@ -32,7 +32,8 @@ import java.io.IOException; import java.util.*; - public class ResXmlElement extends ResXmlNode implements JSONConvert { + public class ResXmlElement extends ResXmlNode implements JSONConvert, + Comparator { private final BlockList mStartNamespaceList; private final SingleBlockContainer mStartElementContainer; private final BlockList mBody; @@ -52,6 +53,31 @@ addChild(3, mEndElementContainer); addChild(4, mEndNamespaceList); } + public void changeIndex(ResXmlElement element, int index){ + int i = 0; + for(ResXmlNode xmlNode:mBody.getChildes()){ + if(i == index){ + element.setIndex(i); + i++; + } + if(xmlNode==element){ + continue; + } + xmlNode.setIndex(i); + i++; + } + mBody.sort(this); + } + public int indexOf(ResXmlElement element){ + int index = 0; + for(ResXmlNode xmlNode:mBody.getChildes()){ + if(xmlNode==element){ + return index; + } + index++; + } + return -1; + } public void setAttributesUnitSize(int size, boolean setToAll){ ResXmlStartElement startElement = getStartElement(); startElement.setAttributesUnitSize(size); @@ -849,6 +875,10 @@ return xmlElement; } @Override + public int compare(ResXmlNode node1, ResXmlNode node2) { + return Integer.compare(node1.getIndex(), node2.getIndex()); + } + @Override public String toString(){ ResXmlStartElement start = getStartElement(); if(start!=null){ diff --git a/src/main/java/com/reandroid/arsc/container/BlockList.java b/src/main/java/com/reandroid/arsc/container/BlockList.java index 073a998..7902273 100755 --- a/src/main/java/com/reandroid/arsc/container/BlockList.java +++ b/src/main/java/com/reandroid/arsc/container/BlockList.java @@ -23,6 +23,7 @@ import com.reandroid.arsc.io.BlockReader; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; public class BlockList extends Block { @@ -31,6 +32,9 @@ public class BlockList extends Block { super(); mItems=new ArrayList<>(); } + public void sort(Comparator comparator){ + mItems.sort(comparator); + } public boolean remove(T item){ if(item!=null){ item.setParent(null);