我正在分割一个字符串,然后将每个分割值附加到一个 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/