当前位置: 代码迷 >> Android >> listview 动态添加,该如何解决
  详细解决方案

listview 动态添加,该如何解决

热度:101   发布时间:2016-04-28 02:21:21.0
listview 动态添加
动态添加后会把原来的数据都变成最新数据,就是把原来的覆盖 了,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数据会覆盖
  相关解决方案