Java 在listview中显示hashmap的键值对
我想在多列ListView中显示hashmap的每个键值对。我为listview创建了一个自定义适配器,但我无法理解如何检索所有键的值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
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有用得多。:)除此之外,您的代码工作得非常好。非常感谢。