2013-04-01 39 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

你傳遞的關鍵是錯誤的。你傳遞一個字符串,你需要傳入一個字符串列表。因此,創建一個列表,將您試圖傳入哈希映射的值保存到列表中,然後將該列表放入哈希映射中。

相關問題