我已将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));
}
});
答案 0 :(得分:1)
没有看到更多的代码,很难确定,但我会冒险猜测......
当您离开活动并返回时,框架会尝试将您恢复到使用savedInstanceState
捆绑包的位置。它使用它来重新创建您最后一次参与该活动的位置。听起来你已经在onCreate
方法中设置了列表并且没有检查savedInstanceState
包,所以当你回到活动时,框架正在恢复你的列表,然后进入你的代码并重新创建列表(在这种情况下,再次添加相同的数据)。
尝试将列表创建代码包装在if
中,以检查是否存在savedInstanceState
包。
像这样:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
// do your list setup here
}
}
使用它,如果你回到活动并且框架保存了你的状态,它将简单地恢复它并且不会运行你的列表创建代码。
我知道这不能回答实际问题,但它应该解决根本问题(在返回活动时重复列表数据)。