我的代码:
public ArrayList<Map<String, String>> XMLToArray(String Data, Document Doc,
XMLParser file) {
Map<String, String> map = new HashMap<String, String>();
ArrayList<Map<String, String>> menuItems = new ArrayList<Map<String, String>>();
for (int i = 0; i < Doc.getElementsByTagName("item").getLength(); i++) {
Element e = (Element) Doc.getElementsByTagName("title").item(i);
Element e2 = (Element) Doc.getElementsByTagName("description")
.item(i);
// Element e3 = (Element)Doc.getElementsByTagName("link").item(i);
map.put("titre", file.getElementValue(e));
map.put("description", file.getElementValue(e2));
// map.put("lien", file.getElementValue(e3));
// adding HashList to ArrayList
menuItems.add(map);
}
return menuItems;
}
在调试中,我可以在地图中看到每个标题和描述。当我在arrayList中添加我的地图时,arraylist中的所有先前键值都被当前键值替换。 所以最后我有一个带有20个相同标题和描述的arrayList。
如何在arrayList中添加多个标题和描述而不删除所有其他标题和描述?
答案 0 :(得分:1)
您应该为每个menuItem创建一个新地图。在下面的示例中,我将地图初始化程序移动到for循环:
public ArrayList<Map<String, String>> XMLToArray(String Data, Document Doc, XMLParser file)
{
ArrayList<Map<String, String>> menuItems = new ArrayList<Map<String, String>>();
for(int i = 0; i < Doc.getElementsByTagName("item").getLength();i++)
{
Map<String, String> map = new HashMap<String, String>();
Element e = (Element)Doc.getElementsByTagName("title").item(i);
Element e2 = (Element)Doc.getElementsByTagName("description").item(i);
//Element e3 = (Element)Doc.getElementsByTagName("link").item(i);
map.put("titre", file.getElementValue(e));
map.put("description", file.getElementValue(e2));
//map.put("lien", file.getElementValue(e3));
// adding HashList to ArrayList
menuItems.add(map);
}
return menuItems;
}
答案 1 :(得分:0)
您必须在循环中创建地图:
public ArrayList<Map<String, String>> XMLToArray(String Data, Document Doc, XMLParser file) {
ArrayList<Map<String, String>> menuItems = new ArrayList<Map<String, String>>();
for(int i = 0; i < Doc.getElementsByTagName("item").getLength(); i++) {
Map<String, String> map = new HashMap<String, String>();
Element e = (Element)Doc.getElementsByTagName("title").item(i);
}
}