2015-09-26 43 views
0

我正在使用片段中的默认列表视图来显示正在从URL调用的数据。有一个包含ListView的SwipeRefreshLayout。但是,当我刷新时,旧数据仍在列表视图中,新数据刚刚添加到列表顶部。有没有办法使旧数据无效?
我已经利用其从SimpleAdapter类创建像这样一个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);

我试图让适配器null或使用自带的ListView中invalidate()方法。该适配器没有notifyDataSetChanged()方法。
newsItemList是一个ArrayList,它具有来自URL的数据。它宣称,像这样:
ArrayList<HashMap<String,String>> newsItemList;如何在使用ListAdapter时使ListView失效以获得新数据

回答

1

重要的是: 当你得到新的数据时,你清楚ArrayList> newsItemList吗? 如果u做 只是重复:

 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); 
+0

everytym我还能保持它给了我一个空的错误call2the URL之前空。 – Manny265

+0

除此之外,我应该能够点击任何新闻项目并阅读,但只有新的项目才能返回旧数据集带来的错误,即使他们在同一个列表中也是错误的 – Manny265

+0

实际上这是正确的。我在onViewCreated()方法中初始化了该对象,而不是将该行移至要求刷新的方法。 – Manny265

0

尝试使用adapter.clear();把它当您执行刷新时执行的方法!

+0

ListAdapter没有这个方法 – Manny265