java - HashMap 仅将循环中的最后一个值附加到 ListView

标签 java android hashmap

我正在分割一个字符串,然后将每个分割值附加到一个 HashMap ,然后将其设置为 SimpleListAdapter。但是,只有最后一个值 split 方法被附加到 ListView 中。 代码:

for (String set : splitSet)
                {  
                 key=splitSet[0];
                 value1= splitSet[1];
                 value2 = splitSet[2];
                 }
                hmap = new HashMap<String, String>();
                hmap.put( key, value1);
                hmap.put(key, value2);

              listrows = new ArrayList<Map<String, String>>();
              listrows.add(hmap);

           //attach values to listview

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

ListView 输出应该是以下整数:

    value1
    value2

    value1
    value2
    .............

但我只从分割结果中获取最后一个值。出了什么问题?

最佳答案

您循环访问 splitSet 只有在那之后您才创建 map 并填充它 - 显然只有最后一个值......重新格式化后,您的代码给出:

for (String set : splitSet) {  
    key = splitSet[0];
    value1 = splitSet[1];
    value2 = splitSet[2];
}
hmap = new HashMap<String, String>();
hmap.put(key, value1);
hmap.put(key, value2);

而你的意思可能是:

hmap = new HashMap<String, String>();

for (String set : splitSet) {  
    key = splitSet[0];
    value1 = splitSet[1];
    value2 = splitSet[2];
    hmap.put(key, value1);
    hmap.put(key, value2);
}

但是仍然存在一个问题:您将两个值放入同一个键value1在这里丢失了。你可能也不是这个意思。也许使用 List<String> s 作为值而不是 String是?在这种情况下,代码变为:

hmap = new HashMap<String, List<String>>();

List<String> list;
for (String set : splitSet) {  
    key = splitSet[0];
    value1 = splitSet[1];
    value2 = splitSet[2];
    list = new ArrayList<String>();
    hmap.put(key, list);
    list.add(value1);
    list.add(value2);
}

关于java - HashMap 仅将循环中的最后一个值附加到 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17264472/

相关文章:

java - 使用 hashmap 代替 arraylist

java - SparseArray 与 HashMap

java - 在 Java 中创建 "logical exclusive or"运算符

java - Java 加密扩展的 key 长度限制

java - 使用 if 语句求 3 个变量中的最小值

java - Android 日期格式解析抛出未处理的异常

java - 如何通过检查其值从 hashmap 中删除条目?

JavaFX TextFlow - 空文本节点不显示空(从相邻文本中窃取字符)

android - 没有 ImageView 时如何正确对齐文本?

android - Espresso 在 RecyclerView 中发现可能不在屏幕上的行