有人可以解释一下以下代码为什么不起作用的原因吗?
每当用户单击刷新按钮时,我都尝试使用以下代码更新报告列表

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/

10-09 04:41