如何在android中清除我的listview

时间:2012-05-31 10:48:17

标签: android listview listadapter

我已将ListAdapter包含在我的EMPLOYEE类中。而list1包含Empname的值, Eno,Salary从webservices.Now获取后显示员工中的5条记录 屏幕...当我点击Depatrment Activity并回到Employee ...最初 5条记录被附加到列表中,现在有10条记录存在,等等......这个过程正在进行...... 请帮助我,因为没有附加重复项,它必须刷新列表。

注意:clear()或notifydatasetchanged(),invalidate()不起作用。

ListAdapter adapter = new SimpleAdapter(this, list1,
R.layout.employee, new String[] { "EmpName","Eno", "Salary" }, new int[]
 {R.id.ename, R.id.eno,R.id.sal});

    setListAdapter(adapter);
Listview lv = getListView();

    lv.setTextFilterEnabled(true);

    lv.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            pos = position;
            registerForContextMenu(getListView());

        }

    });


    TextView tvdept = (TextView) findViewById(R.id.Department); 
    tvdept.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
        startActivity(new Intent(Employee.this, Department.class));
        }
    });

1 个答案:

答案 0 :(得分:1)

没有看到更多的代码,很难确定,但我会冒险猜测......

当您离开活动并返回时,框架会尝试将您恢复到使用savedInstanceState捆绑包的位置。它使用它来重新创建您最后一次参与该活动的位置。听起来你已经在onCreate方法中设置了列表并且没有检查savedInstanceState包,所以当你回到活动时,框架正在恢复你的列表,然后进入你的代码并重新创建列表(在这种情况下,再次添加相同的数据)。

尝试将列表创建代码包装在if中,以检查是否存在savedInstanceState包。

像这样:

@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   if (savedInstanceState == null) {
       // do your list setup here
   }
 }

使用它,如果你回到活动并且框架保存了你的状态,它将简单地恢复它并且不会运行你的列表创建代码。

我知道这不能回答实际问题,但它应该解决根本问题(在返回活动时重复列表数据)。