[英]How can i access list elements in arraylist
I am parsing xml from web service, i want to use xml values as a arraylist 我正在从Web服务解析xml,我想使用xml值作为arraylist
eElement.getElementsByTagName(Lyr_NAME) values are Traffic , Satellite , Hybrid , Satellite 2
eElement.getElementsByTagName(Lyr_URL) values are url1 , url2 , url3, url4
Lyr_LAYER_TYPE
and Lyr_FIELD
has 4 elements Lyr_LAYER_TYPE
和Lyr_FIELD
有4个元素
List<String> LayerNames = new ArrayList<String>();
for (int i = 0; i < nl.getLength(); i++) {
Node nNode = nl.item(i);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
LayerNames.add(0, eElement.getElementsByTagName(Lyr_NAME).item(0).getTextContent());
LayerNames.add(1,eElement.getElementsByTagName(Lyr_URL).item(0).getTextContent());
LayerNames.add(2,eElement.getElementsByTagName(Lyr_LAYER_TYPE).item(0).getTextContent());
LayerNames.add(3,eElement.getElementsByTagName(Lyr_FIELD).item(0).getTextContent());
}
}
Layer values are coming rapidly. 图层值正在快速增长。 But when i use get to access elements in arraylist it always return
Lyr_NAME
elements, then when i write LayerNames[0]
Android Studio didn't resolve type. 但是,当我使用get来访问arraylist中的元素时,它总是返回
Lyr_NAME
元素,然后当我编写LayerNames[0]
Android Studio无法解析类型。 My log is; 我的日志是
Log.e("Array List Result",LayerNames.get(0));
My question is how can i access to Lyr_URL
, Lyr_TYPE
or Lyr_FIELD
;? 我的问题是如何访问
Lyr_URL
, Lyr_TYPE
或Lyr_FIELD
Thanks in advance 提前致谢
You cannot get in List. 您无法进入列表。 You can use Map.
您可以使用地图。
Map<String,String> LayerNames = new HashMap<String,String>();
for (int i = 0; i < nl.getLength(); i++) {
Node nNode = nl.item(i);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
LayerNames.put(Lyr_NAME, eElement.getElementsByTagName(Lyr_NAME).item(0).getTextContent());
LayerNames.put(Lyr_URL,eElement.getElementsByTagName(Lyr_URL).item(0).getTextContent());
LayerNames.put(Lyr_LAYER_TYPE,eElement.getElementsByTagName(Lyr_LAYER_TYPE).item(0).getTextContent());
LayerNames.put(Lyr_FIELD,eElement.getElementsByTagName(Lyr_FIELD).item(0).getTextContent());
}
}
Log.e("Map Result",LayerNames.get(Lyr_URL)); Log.e(“地图结果”,LayerNames.get(Lyr_URL));
You neet to write get
functions into Lyr_NAME
classes' and return the attributes of the class with that functions. 您
Lyr_NAME
将get
函数写入Lyr_NAME
类中,然后使用该函数返回该类的属性。 Than, you should add the same functions for the own attributes of Lyr_URL
. 然后,您应该为
Lyr_URL
的自身属性添加相同的功能。 You can just simply: 您可以简单地:
LayerNames.get(0).getLyr_URL().getURL1()
LayerNames.get(0).getTraffic()
// etc.
By populating arraylist with index, you are overwriting the existing elements and hence you will just left with last elements in the xml if there are multiple tags. 通过使用索引填充arraylist,您将覆盖现有元素,因此,如果有多个标签,您将只剩下xml中的最后一个元素。 Instead you should do something like:
相反,您应该执行以下操作:
for (int i = 0; i < nl.getLength(); i++) {
Node nNode = nl.item(i);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
LayerNames.add(eElement.getElementsByTagName(Lyr_NAME).item(0).getTextContent());
LayerNames.add(eElement.getElementsByTagName(Lyr_URL).item(0).getTextContent());
LayerNames.add(eElement.getElementsByTagName(Lyr_LAYER_TYPE).item(0).getTextContent());
LayerNames.add(eElement.getElementsByTagName(Lyr_FIELD).item(0).getTextContent());
}
}
And then you could do something like: 然后您可以执行以下操作:
for (int i = 0; i<LayerNames.size(); i+=4) {
for (int j = i; j< i+4;j++) {
Log.e("Array List Result", LayerNames.get(j));
}
}
if you think it's just going to be once, then you could do something like: 如果您认为这只是一次,那么您可以执行以下操作:
for (int i = 0; i<LayerNames.size(); i+=4) {
Log.e("Array List Result", LayerNames.get(j));
}
It will print layer name followed by url followed by layer type followed by field. 它将打印层名称,后跟url,后跟层类型,然后是字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.