[英]Android: Get the entire array the value/key is in ArrayList<HashMap<String, String>>
[英]add the value in Arraylist<string,List<String>> in hashmap android
我必须获取大量数据。
所以我已经将字符串的数组列表与list。一起使用了,在这里我如何在地图上添加值。
我用下面的代码:
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为我提供了这些解决方案...
在这条线
map.put( KEY_TITLE,((Element)nl.item(i)).getAttribute("name"));
您要添加一个字符串而不是列表
此时,您必须创建一个字符串列表,然后将字符串添加到该列表中,并将该列表添加到地图中。
例如:
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);
}
}
因为String
不是List<String>.
,您会收到该错误List<String>.
将地图声明更改为HashMap<String, String>
或将您的String
括入List<String>
并将其提供给方法。
您传递的密钥是错误的。 您要传递一个字符串,您需要传递一个字符串列表。 因此,创建一个列表,将要传递给哈希映射的值粘贴到列表中,然后将该列表放入哈希映射。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.