【问题标题】:HashMap values not being appended to ListViewHashMap 值未附加到 ListView
【发布时间】:2013-06-20 03:55:57
【问题描述】:

我正在尝试从具有 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 并添加密钥?

【问题讨论】:

  • @Reimeus,认为它已添加到 hm.put(key, values);
  • @Reimeus,是的,添加了密钥。但仍然不是显示 lsitview,而是显示数组。
  • @Reimeus 一个例子就足够了,真的让我头疼

标签: java android map hashmap


【解决方案1】:

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

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

HashMap&lt;String, List&lt;String&gt;&gt; hm 是列表的映射。因此,List&lt;Map&lt;String,String&gt;&gt; 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);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-13
    • 2012-02-25
    • 2021-02-26
    • 2013-10-28
    • 2020-04-06
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    相关资源
    最近更新 更多