2013-04-01 37 views
2

我必须获取数据的lis。在hashmap中添加Arraylist <string,List <String>>中的值android

所以我用list.here字符串arraylist如何添加地图上的值。

我在下面的代码中使用:

 static final String KEY_TITLE = "Category"; 
     static final String KEY_ARTICLE = "article"; 
      static final String KEY_IMAGE = "image"; 


final ArrayList<HashMap<String, List<String>>> songsList = new ArrayList<HashMap<String, List<String>>>(); 
     XMLParser parser = new XMLParser(); 
     String xml = parser.getXmlFromUrl(URL); // getting XML from URL 
     Document doc = parser.getDomElement(xml); // getting DOM element 

     NodeList nl = doc.getElementsByTagName(KEY_TITLE); 
     NodeList nl1 = doc.getElementsByTagName(KEY_ARTICLE); 
     NodeList nl2 = doc.getElementsByTagName(KEY_IMAGE); 
     System.out.println(nl.getLength()); 
     for (int i = 0; i < nl.getLength(); i++) { 
      //System.out.println(nl.getLength()); 
      HashMap<String, List<String>> map = new HashMap<String, List<String>>(); 
      map.put(KEY_TITLE,((Element)nl.item(i)).getAttribute("name")); 
      for (int j = 0; j < nl1.getLength(); j++) { 
       map.put(KEY_ARTICLE,((Element)nl1.item(j)).getAttribute("title")); 
       map.put(KEY_IMAGE,((Element)nl2.item(j)).getAttribute("url")); 
      } 
      songsList.add(map); 
      } 

这里我得到这些(map.put(KEY_TITLE,((Element)nl.item(i)).getAttribute("name"));)线以下错误:

The method put(String, List<String>) in the type HashMap<String,List<String>> is not applicable for the arguments (String, String) 

如何清除这些错误..pls我提供的解决方案来。 ..

回答

4

在该行

map.put(KEY_TITLE,((Element)nl.item(i)).getAttribute("name")); 

要添加一个字符串,而不是List

你必须在这一点上创建的字符串的列表和字符串添加到它,并在列表你的地图。

例如为:

List<String> myList= new ArrayList<String>(); 
    myList.add((Element)nl.item(i)).getAttribute("name")); 
    map.put(KEY_TITLE,myList); 

你有一个循环。我认为我知道你想达到什么,我会更新我的代码。这可以帮助您避免覆盖地图输入

HashMap<String, List<String>> map = new HashMap<String, List<String>>(); 

     for(int i = 0; i < nl.getLength(); i++) { 
      String name = (Element) nl.item(i)).getAttribute("name"); 
      populateMap(map, name, KEY_TITLE); 
      for(int j = 0; j < nl1.getLength(); j++) { 
       String title=(Element) nl1.item(j)).getAttribute("title"); 
       populateMap(map, title, KEY_ARTICLE); 

       String url=(Element) nl2.item(j)).getAttribute("url"); 
       populateMap(map, url, KEY_IMAGE); 
      } 
      songsList.add(map); 
     } 

方法populateMap()

void populateMap(HashMap<String, List<String>> map, String value, String key) { 
     List<String> myList; 
     if(!map.containsKey(key)) { 
      myList = new ArrayList<String>(); 
      myList.add(value); 
      map.put(key, myList); 
     } else { 
      myList = map.get(key); 
      myList.add(value); 
     } 
    } 
+0

嗨,我有以下的回答:HTTP://stackoverflow.com/questions/15737756/hashmap-in -android-xml-parsing/15737953?noredirect = 1#15737953这里我有值列表ly.how我可以在地图上添加值列表 – user2218667

+0

@ user2218667你看到我的例子吗? –

+0

@ user2218667我看到它。但是这篇文章和你的文章完成之间有区别。 HashMap map = new HashMap ()但在你的HashMap > map = new HashMap >(); –

1

您得到该错误,因为String不是List<String>.

要么将​​您的地图声明更改为HashMap<String, String>,要么将您的String放入List<String>并将其提供给该方法。

1

你传递的关键是错误的。你传递一个字符串,你需要传入一个字符串列表。因此,创建一个列表,将您试图传入哈希映射的值保存到列表中,然后将该列表放入哈希映射中。

相关问题