我正在拆分字符串,然后将每个拆分值附加到一个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
.............
但是我只从分割结果中获取最后一个值。这有什么不对?
答案 0 :(得分:1)
你只有在{<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);
}
在这里丢失了。你可能也不是这个意思。也许使用value1
s作为值而不是List<String>
s?在这种情况下,代码变为:
String
答案 1 :(得分: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);
}