在notifyDataSetChanged之后ListView重复内容

时间:2014-05-16 21:37:52

标签: android listview

我正在设计一个由自定义适配器驱动的ListView。在片段中,我在onActivityCreated()中分配适配器,如下所示:

private List<Datas> values = new ArrayList<Datas>();
private MyAdapter adapter;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    adapter = new MyAdapter(values, getActivity());
    listView.setAdapter(adapter);
    .....}

稍后在应用程序中,我从互联网上加载数据,我把我的值放在这样:

while(loop on every Datas items) {
    values.add(new Datas(...));
}
adapter.notifyDataSetChange();

当用户向下滚动时,我会加载更多项目(感谢OnScrollListener,用于记录),因此再次调用上一个代码段。 基本上,在从滚动更新之前,我有这样的事情: A,B,C,D,E,F 更新后,我有A,B,C,D E,F,A,B,C,D E,F,G,H,I,J,K ......

第一个值出现两次,最后只是追加的instate。

感谢阅读和帮助:)

编辑:我重新考虑了我的班级,使用了新的适配器和所有内容。现在,如果没有合理的解释,它就有效。无论如何,谢谢;)

1 个答案:

答案 0 :(得分:1)

这是因为您正在下载已有的值并再次添加它们... 你应该在添加之前清除列表,或者(更好)避免下载列表中已经存在的数据