0

我正在尝试从具有 1 个键的多个值的哈希图中检索数据并将其设置为列表视图,但不是将值设置到列表视图中并显示列表视图,而是显示的只是数组(没有键)。代码如下:

ListView lv = (ListView)findViewById(R.id.list);
    //hashmap of type  `HashMap<String, List<String>>`
    HashMap<String, List<String>> hm = new HashMap<String, List<String>>();
    List<String> values = new ArrayList<String>();
    for (int i = 0; i < j; i++) {
        values.add(value1);
        values.add(value2);
        hm.put(key, values);
    }

并检索值并放入列表视图

ListAdapter adapter = new SimpleAdapter(
                        MainActivitty.this,  Arrays.asList(hm),
                        R.layout.list_item, new String[] { key,
                                value1,value2},
                        new int[] { R.id.id, R.id.value1,R.id.value2 });
                // updating listview
                lv.setAdapter(adapter);

一个例子是 key=1,value2=2 和 value3=3,它将显示一个看起来像 [2,3] 的数组。我如何让它显示 lisview 并添加密钥?

4

1 回答 1

1

SimpleAdapters Consturctor 声明为它的第二个参数:

数据:地图列表。列表中的每个条目对应于列表中的一行。Maps 包含每一行的数据,并且应该包括“from”中指定的所有条目

HashMap<String, List<String>>hm 是列表的映射。所以就像List<Map<String,String>> hm您可能需要的数据类型一样。

这是编辑的来源:

 ListView lv = (ListView)findViewById(R.id.list);
            List<Map<String,String>> mapList = new ArrayList<Map<String, String>>();
            Map<String,String> mapPerRow;
            for (int i = 0; i < rowNumbers; i++) {
                mapPerRow = new HashMap<String, String>();
                mapPerRow.put("column1", value1);
                mapPerRow.put("column2", value2);

                mapList.add(mapPerRow);
            }


            ListAdapter adapter = new SimpleAdapter(
                    MainActivitty.this,  mapList,
                    R.layout.list_item, new String[] { "column1", "colum2"},
                    new int[] { R.id.value1,R.id.value2 });
            // updating listview
            lv.setAdapter(adapter);

我不明白你为什么想要其中的钥匙(如果需要更多,只需将字符串添加到地图中)?

于 2013-06-23T16:05:31.417 回答