当调用BaseAdapter的notifyDataSetChanged方法更新数据时,有时候会导致崩溃,主要原因是在更新数据之后没有正确地更新BaseAdapter内部的数据集合。
解决方法如下:
示例代码如下:
// 更新数据
dataList.clear();
dataList.addAll(newDataList);
// 更新BaseAdapter的数据集合并调用notifyDataSetChanged方法
baseAdapter.setData(dataList);
baseAdapter.notifyDataSetChanged();
示例代码如下:
public class MyAdapter extends BaseAdapter {
private List dataList;
// 构造方法和其他方法省略
// 设置数据集合并通知数据更新
public void setData(List dataList) {
this.dataList = dataList;
}
// 其他方法省略
}
然后,在调用notifyDataSetChanged方法前,先调用setData方法来更新数据集合。
示例代码如下:
// 更新数据
dataList.clear();
dataList.addAll(newDataList);
// 更新BaseAdapter的数据集合并调用notifyDataSetChanged方法
baseAdapter.setData(dataList);
baseAdapter.notifyDataSetChanged();
通过以上两种方法,可以避免在调用BaseAdapter的notifyDataSetChanged方法时出现崩溃的情况。