Android列表视图只刷新一次

时间:2014-04-24 18:14:39

标签: android listview refresh

我非常绝望,请帮助我。

在我的主要活动中,我想从列表视图中删除所有项目,然后添加其他数据。我能够删除数据并刷新列表视图,但是当我添加新数据时,会发生一些奇怪的事情。我在数组中插入数据。每次插入后,我都会在我的适配器上调用notifydatasetchanged。适配器获取这些项目(我已在调试模式下确认了这一点)。但列表视图不会刷新。现在出现了非常奇怪的事情:当我点击设备上的后退按钮时,应用程序退出(这部分没问题),但是在退出之前,它会刷新列表视图中的正确数据。

以下是我的代码的一些部分: 删除我使用的数据:

newsArrayList = new ArrayList<NewsClass>();
Adapter = new NewsAdapter(this, newsArrayList);
lv.setAdapter(Adapter);

&#34; LV&#34;是我的列表视图。列表视图正确丢失所有项目并刷新。我也试过这个:

newsArrayList.clear();
Adapter.notifyDataSetChanged();

也像预期的那样工作。然后我使用&#34; for&#34;循环将新项添加到我的数组,其中我有以下几行:

newsArrayList.add(news[i]);
Adapter.notifyDataSetChanged();

正如我所写,在调试模式下运行时,一切似乎都很好。我整天都在研究这个问题。我在stackoverflow上看了几篇关于类似问题的帖子,我甚至在youtube上看过video。我从主UI线程调用所有内容。 我可以通过重新启动我的活动来解决这个问题,但我想要做得更好。我尝试过无效等等,但没有任何帮助。请注意非常奇怪的事情,我写道...... 我认为,我必须强制活动重绘其视图,或类似的东西,但甚至refreshDrawableState();在我的listview没有帮助。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

基本上如果要清除列表数据,请调用

newsArrayList.clear();
lv.setAdapter(null);

再次在ArrayList中添加你的数据并设置适配器

newsArrayList = new ArrayList<NewsClass>();
Adapter = new NewsAdapter(this, newsArrayList); // considering list with some elements
lv.setAdapter(Adapter);

如果您收到 outofmemory 错误/异常,那么 getView 方法中的适配器类存在问题