我非常绝望,请帮助我。
在我的主要活动中,我想从列表视图中删除所有项目,然后添加其他数据。我能够删除数据并刷新列表视图,但是当我添加新数据时,会发生一些奇怪的事情。我在数组中插入数据。每次插入后,我都会在我的适配器上调用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没有帮助。
提前谢谢!
答案 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 方法中的适配器类存在问题