public void updateAdapter()
{

 setListAdapter(new SimpleAdapter(this, getData(),
R.layout.paperlist, new String[] { "paper_name", "paper_id" },
new int[] { R.id.paper_name,R.id.paper_id}));
}public List<HashMap<String , String>> getData()
{
System.out.println("list的长度"+list.size());
for (int i = 0; i < 2;i++)
{
HashMap<String, String> map1 = new HashMap<String, String>();
map1.clear();
map1.put("paper_name", MyContentHandler.hisname[i]);
map1.put("paper_id", MyContentHandler.id[i]);
list.add(map1);
}

System.out.println("循环结束后list的长度"+list.size());

return list;
}
我写了第一个函数 updateAdapter(),里面是显示一个ListView,ListView从getData()这个函数获取数据,
但是我发现当我多次调用updateAdapter()时,发现ListView并不是只显示2个子项,而是不断的在后面增加,成
2,4,6,8。。,递增,请问怎样才能做的不是从末尾增加而是清空后在从新写入呢?

解决方案 »

  1.   

    SimpleAdapter自己不可以清空数据
    然后怎么清空里面的数据呢?
      

  2.   

    调用removeAllViewsInLayout(),清空以前的数据
      

  3.   

    可是为什么我这里没有list.removeAllViewsInLayout();这个方法啊?
    我是这么定义的
    static ArrayList<HashMap<String, String>> list=new ArrayList<HashMap<String, String>>();
      

  4.   

    你是写了个子类继承BaseAdapter不  你可以在getview中调用adapter的notifyDataSetChanged()方法进行item内容的刷新
      

  5.   

    应该是清adapter然后重新设置adapter
      

  6.   

    list是指ListView对象,不是List,不好意思,没说清。
      

  7.   

    兄台,现在的情况是我代码中有两个System.out.println()函数,
    他们每次输出的情况是
    list的长度0;
    循环结束后list长度2;list的长度0;
    循环结束后list长度6;
    直接就从2跳到6了。
    而且应为我参照的ListView代码中,并没有显示的定义ListView对象,他是直接在布局文件中声明后就能用了。
      

  8.   

    写错了,是
    list的长度0;
    循环结束后list长度2;list的长度2;
    循环结束后list长度6;
    所以我觉得是list.add(map1)这里的问题,add的位置不对。
      

  9.   

    list.clear()
    在调用listview的notify...Change()  刷新下
      

  10.   

    再调用一次setAdapter,设置一个空数据集的Adapter即可