删除自定义BaseAdapter中的所有项目并添加新项目

时间:2014-10-03 14:07:33

标签: android listview

通过我的适配器执行一些简单的任务我遇到了麻烦。 我实现BaseAdapter的类,与ListView相关联。 在我创建了此适配器并向用户显示之后,如果发生某些事件,我将删除适配器中的所有元素,并添加新的适配器。

我在BaseAdapter中实现了这个方法:

public void clearAndBuild(ArrayList<PictureObject> new_pics, String some_text) {
    pics.clear();
    pics.addAll(new_pics);
    this.hashtag = hashtag;

    //do something else
}

(其中pics是一个包含放在ListView中的项的ArrayList)。在我的活动中,刷新所有我打电话:

adapter.clearAndBuild(pics, tag);
adapter.notifyDataSetChanged();

但它不起作用。 在我调用该方法之后,listView中的旧项被删除,但是没有显示新的项(我得到一个空列表视图)。 怎么了?

2 个答案:

答案 0 :(得分:0)

唯一的原因可能是您正在重复使用picsnew_pics的相同引用。在new_pics

上调用clear()之前,请复制pics

答案 1 :(得分:0)

你可以这样做:

public void clearAndBuild(ArrayList<PictureObject> new_pics, String some_text) {
     pics. = new ArrayList<PictureObject>(new_pics);
     this.hashtag = hashtag;

    //do something else
}