Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在listview中显示hashmap的键值对_Java_Android_Listview_Android Listview_Hashmap - Fatal编程技术网

Java 在listview中显示hashmap的键值对

Java 在listview中显示hashmap的键值对,java,android,listview,android-listview,hashmap,Java,Android,Listview,Android Listview,Hashmap,我想在多列ListView中显示hashmap的每个键值对。我为listview创建了一个自定义适配器,但我无法理解如何检索所有键的值 MyAdapter.java: public final class MyAdapter { private Activity activity; private HashMap<String, String> map; public MyAdapter(Activity activity

我想在多列ListView中显示hashmap的每个键值对。我为listview创建了一个自定义适配器,但我无法理解如何检索所有键的值

MyAdapter.java:

    public final class MyAdapter {

        private Activity activity;
        private HashMap<String, String> map;

        public MyAdapter(Activity activity, HashMap<String, String> map) {
            this.activity = activity;
            this.map = map;
        }

        public int getCount() {
            return map.size();
        }    

        public View getView(final int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                LayoutInflater inflater = (LayoutInflater) activity
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = inflater.inflate(R.layout.my_list_item,
                        null);
            }

                String key = //GET THE KEY VALUE HERE
                String value = (String) map.get(key);
                TextView keyView = (TextView) convertView.findViewById(R.id.item_key);
                keyView.setText(key);

                TextView valV = (TextView) convertView.findViewById(R.id.item_value);
                valV.setText(value);


            return convertView;
        }    

        public void setItemList(HashMap<String, String> map) {
            this.map = map;
        }

    }
MyAdapter.java:
公共最终类MyAdapter{
私人活动;
私有哈希映射;
公共MyAdapter(活动、哈希映射){
这个。活动=活动;
this.map=map;
}
public int getCount(){
返回map.size();
}    
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
if(convertView==null){
LayoutFlater充气机=(LayoutFlater)活动
.getSystemService(上下文布局\充气机\服务);
convertView=充气机。充气(R.layout.my_列表项目,
无效);
}
String key=//在此处获取键值
字符串值=(字符串)map.get(键);
TextView键视图=(TextView)convertView.findViewById(R.id.item_键);
keyView.setText(key);
TextView valV=(TextView)convertView.findViewById(R.id.item_值);
阀门设置文本(值);
返回视图;
}    
公共void setItemList(HashMap映射){
this.map=map;
}
}
好了

您可以使用:
myMap.keySet()
函数检索HashMap键,如下所示:

Set<String> = map.keySet();
public static void iterateMap(Map map) {
    Iterator iterator = map.entrySet().iterator();
    while (iterator.hasNext()) {
        Map.Entry item = (Map.Entry)iterator.next();
        //Do whatever you like with item.getKey() and item.getValue()
            iterator.remove(); 
        }
}
for (Map.Entry<String, String> entry : map.entrySet()){
    System.out.println(entry.getKey() + " : " + entry.getValue());
}
map.get(myList.get(position));
最后,您可以使用map.entrySet()函数:

for (Map.Entry<String, String> item : map.entrySet()){
   //Do as you please with item.getKey() and itme.getValue()
}
for(Map.Entry项:Map.entrySet()){
//对item.getKey()和itme.getValue()执行任意操作
}

一个地图并不是这样工作的,你不能保证,如果你迭代的项目,他们将永远是在相同的顺序,你应该考虑使用一个列表代替。 但是,您可以像这样迭代地图中的所有项目:

Set<String> = map.keySet();
public static void iterateMap(Map map) {
    Iterator iterator = map.entrySet().iterator();
    while (iterator.hasNext()) {
        Map.Entry item = (Map.Entry)iterator.next();
        //Do whatever you like with item.getKey() and item.getValue()
            iterator.remove(); 
        }
}
for (Map.Entry<String, String> entry : map.entrySet()){
    System.out.println(entry.getKey() + " : " + entry.getValue());
}
map.get(myList.get(position));

在构造函数中,获取entrySet并从中创建数组:

Map.Entry<String, String>[] entryArray = map.entrySet().toArray(new Map.Entry<String, String>[0]);

你观察到了什么错误/行为?在这里复制你的堆栈跟踪。我还不能执行代码,因为我无法获得
键的值
谢谢你的建议!列表实际上比HashMap有用得多。:)除此之外,您的代码工作得非常好。非常感谢。