使用 ListAdapter 时如何使新数据的 ListView 失效

How to invalidate ListView for new data when using ListAdapter

我在片段中使用默认列表视图来显示从 URL 调用的数据。有一个包含 ListView 的 SwipeRefreshLayout。但是,当我刷新时,旧数据仍在列表视图中,新数据只是添加到列表顶部。有没有办法让旧数据失效?
我使用了从 SimpleAdapter class 创建的 ListAdapter,如下所示:
ListAdapter adapter = new SimpleAdapter(getActivity(), newsItemList, R.layout.list_item, new String[]{TAG_TITLE, TAG_DATE, TAG_OWNER}, new int[]{R.id.news_title, R.id.news_date, R.id.news_owner}); lvGeneralNews.setAdapter(adapter);

我试过让adapter为null或者使用listview自带的invalidate()方法。适配器没有 notifyDataSetChanged() 方法。
newsItemList 是一个 ArrayList,它具有来自 URL 的数据。它是这样声明的:
ArrayList<HashMap<String,String>> newsItemList;

尝试使用adapter.clear();将它放在执行刷新时执行的方法中!

重要的是: 获取新数据时是否清除 ArrayList> newsItemList? 如果你这样做 只是重复:

      ListAdapter adapter = new SimpleAdapter(getActivity(), newsItemList, R.layout.list_item, new String[]{TAG_TITLE, TAG_DATE, TAG_OWNER}, new int[]{R.id.news_title, R.id.news_date, R.id.news_owner});       
 lvGeneralNews.setAdapter(adapter);