add the value in Arraylist<string,List<String>> in hashmap android
Solution 1
at this line
map.put( KEY_TITLE,((Element)nl.item(i)).getAttribute("name"));
you are adding a single string to instead of List
You have to create a List of String at that point and add your String to it and at the list to your map.
e.g.:
List<String> myList= new ArrayList<String>();
myList.add((Element)nl.item(i)).getAttribute("name"));
map.put( KEY_TITLE,myList);
you have a loop. I think that i know what you want to achieve i'll update my code. This can help you avoiding overriding the map input
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);
}
Method 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);
}
}
Solution 2
You get that error because a String
is not a List<String>.
Either change your map declaration to HashMap<String, String>
or enclose your String
into a List<String>
and give it to the method.
Solution 3
The key you're passing in is wrong. You're passing in a string, you need to pass in a list of strings. So create a list, stick the value you're trying to pass into the hash map into the list, then put that list into the hash map.
user2218667
Updated on June 04, 2022Comments
-
user2218667 almost 2 years
I have to fetch the lis of data.
So i have used the arraylist of string with list.here how can i add the value on map.
I have used below code:
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); }
Here am getting the below error on these
(map.put( KEY_TITLE,((Element)nl.item(i)).getAttribute("name"));)
line:The method put(String, List<String>) in the type HashMap<String,List<String>> is not applicable for the arguments (String, String)
How can i clear these error ..pls provide me solution for these ...