0

我正在拆分一个字符串,然后将每个拆分值附加到一个哈希图中,然后将其设置为 SimpleListAdapter。但是,只有拆分方法中的最后一个值被附加到列表视图中。编码:

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
    .............

但我只从拆分结果中得到最后一个值。怎么了?

4

2 回答 2

1

你循环,splitSet然后创建地图并填充它 - 显然只有最后一个值......重新格式化,你的代码给出:

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);
}

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

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);
}
于 2013-06-23T19:33:15.073 回答
0

从字面上看,您将最后一个值添加到,Hashmap因为您在for循环终止后添加值。这将导致插入最后一个选定的值,Hashmap只需更改 for 循环中的大括号位置并在循环构造HashMap之前创建对象for

hmap = new HashMap<String, String>();
for (String set : splitSet)
{  
    key=splitSet[0];
    value1= splitSet[1];
    value2 = splitSet[2];
    //}//Comment it
    hmap.put( key, value1);
    hmap.put(key, value2);
}
于 2013-06-23T19:34:02.920 回答