有人可以解释一下以下代码为什么不起作用的原因吗?
每当用户单击刷新按钮时,我都尝试使用以下代码更新报告列表
在updateReports
中(在所有数据下载和解析之后):
reportsList = newReportsList;
listAdapter.notifyDataSetChanged();
以前在
onCreateView
中:listAdapter = new ReportsListAdapter(activity, R.layout.list_item_reports, reportsList);
listView.setAdapter(listAdapter);
但是该列表不会刷新,并始终显示旧报告。我尝试使用
listAdapter.clear()
和listAdapter.add()
和for
(我不能使用addAll
,因为我需要使用API 10),但是它给了我一个空指针异常。有什么策略以最干净的方式进行此更换?
最佳答案
reportsList = newReportsList;
listAdapter.notifyDataSetChanged();
不起作用,因为您只是使用对
reportsList
的引用更新了newReportsList
引用。这不会更新适配器具有的引用(对原始数组的原始引用)您的第二种方法应该可以,但是您需要发布类代码并提供
NullPointerException
的详细信息。关于android - 替换列表适配器中的所有条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24161429/