我已将 ListAdapter 包含在我的 EMPLOYEE 类中。list1 包含 Empname 的值,
Eno,从网络服务获取的薪水。现在显示员工中的 5 条记录后
屏幕...当我单击“部门活动”并返回“员工”时...初始
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));
}
});
如果没有看到更多代码,很难确定,但我会冒险猜测......
当您离开活动并返回时,框架会尝试将您恢复到您使用该活动的位置savedInstanceState
捆。它使用它来重新创建您上次在该活动中的位置。听起来您已经在中设置了列表onCreate
方法并且还没有检查savedInstanceState
捆绑,因此当您返回活动时,框架将恢复您的列表,然后继续进入您的代码并重新创建列表(在本例中再次添加相同的数据)。
尝试将列表创建代码包装在if
检查是否存在savedInstanceState
bundle.
像这样:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
// do your list setup here
}
}
使用它,如果您返回活动并且框架保存了您的状态,它将简单地恢复它,而不是运行您的列表创建代码。
我知道这并不能回答实际问题,但它应该解决根本问题(返回活动时复制列表数据)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)