动态添加后会把原来的数据都变成最新数据,就是把原来的覆盖 了,why?
初始第一次
age name
11 aa
动态添加后 第一条数据也变成和第二条一样的了
age name
22 bb
22 bb
代码:
private SimpleAdapter sda=null;
private HashMap<String, String> map = new HashMap<String, String>();
private ArrayList<HashMap<String,String>> arrlist = new ArrayList<HashMap<String,String>>() ;
第一次:
map.put("age", "11");
map.put("name", "aa");
arrlist.add(map);
sda = new SimpleAdapter(this,
arrlist,
R.layout.listsalescol,
new String[] { "age", "name" },
new int[] { R.id.age, R.id.sname});
listv.setAdapter(sda);
动态添加:
map.put("age", "22");
map.put("name", "bb");
arrlist.add(map);
sda.notifyDataSetChanged();
------解决思路----------------------
ArrayList<HashMap<String,String>>
你可以当成一个hashmap的数组。
所以每次添加应该是new一个新的hashmap,就是对不同hashmap进行操作
不然的话会同时修改之前hashmap的值。所以你的add其实是一个以前的hashmap(被修改了),后一个hashmap(新的),但是里面的value相同
而hashmap的特点你也知道,就是key值不能相同。相同则覆盖
------解决思路----------------------
同意楼上的意见
------解决思路----------------------
map1.put("age", "22");
map2.put("name", "bb");
arrlist.add(map1);
arrlist.add(map2);------解决思路----------------------
每次添加数据前都new map,不然map数据会覆盖