[英]Retrieve data from HashMap<String, ArrayList<HashMap<String, String>>>
[英]hashmap and retrieve data from it
我必须对列表视图的更多项进行操作,因此我创建了一个HashMap,其中包含选定应用程序的名称(在列表中)和相对位置。
public void createHashMap(String name, int mPosition) {
// TODO Auto-generated method stub
mHashMap = new HashMap<String, Integer>();
mHashMap.put(name, mPosition);
Toast.makeText(context, name+": "+mPosition, Toast.LENGTH_LONG).show();
}
在我的活动类别的onItemClick中
adapter.createHashMap(itemName, mPosition);
因此,当我单击一行时,现在我将向烤面包展示正确的信息,我需要将数据检索到哈希图中,并且我将其编写为
public void retrieveHashMap() {
Iterator myVeryOwnIterator = mHashMap.keySet().iterator();
while(myVeryOwnIterator.hasNext()) {
String key=(String)myVeryOwnIterator.next();
int value= mHashMap.get(key);
Toast.makeText(context, "Key: "+key+" Value: "+value, Toast.LENGTH_LONG).show();
}
}
这项工作,但是当我调用retrieveHashMap方法时,我仅显示最后一个插入值。 如何显示所有插入的值?
将Toast.makeText
while循环外,然后使用迭代的键在循环内创建所需的消息。
您还需要检查是否在createHashMap()
覆盖了现有的mHashMap
。
看起来您的问题是您每次都初始化新的哈希映射。 这就是为什么只有最后一个值。 尝试这个:
public void createHashMap(String name, int mPosition) {
// init it only one time.
if(mHashMap == null){
mHashMap = new HashMap<String, Integer>();
}
mHashMap.put(name, mPosition);
Toast.makeText(context, name+": "+mPosition, Toast.LENGTH_LONG).show();
}
吐司有一个持续时间,所以您不应该多次称呼它。 如果尝试写日志,则应使用logcat。
更新:另一个原因,也许您的数据具有重复的名称值。 尝试调试或写入logcat,看看是否插入了许多具有相同值的name
数据。 因为不接受哈希映射,所以重复密钥。 例如:
mHashMap.put("test", 2);
mHashMap.put("test", 3); // it will replace the item ["test" - 2] by ["test" - 3]. That's why you got only the last one.
并确保您的迭代器应如下所示:
Iterator<String> myVeryOwnIterator = mHashMap.keySet().iterator();
while(myVeryOwnIterator.hasNext()) {
String key=(String)myVeryOwnIterator.next();
int value= mHashMap.get(key);
System.out.println(key + " " + value);
}
希望有帮助!
使用此方法时
public void createHashMap(String name, int mPosition) {
// TODO Auto-generated method stub
mHashMap = new HashMap<String, Integer>();
mHashMap.put(name, mPosition);
Toast.makeText(context, name+": "+mPosition, Toast.LENGTH_LONG).show();
}
您必须保存哈希图或Toast实例。 通话时
mHashMap = new HashMap<String, Integer>();
并打电话
Toast.makeText(context, name+": "+mPosition, Toast.LENGTH_LONG).show();
刷新(再次创建)实例中的所有数据。
似乎您每次调用createHashMap方法时都在重置mHashMap:mHashMap = new HashMap();
相反,仅在声明mHashMap(作为类成员)的地方才应具有此属性,然后在createHashMap中仅具有“ mHashMap.put(name,mPosition)”部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.