这个Adapter内部一般是构造函数有
this.mObjects = objects;
假设此时objects指向addr1
这个mObjects指向了构建Adapter时的那个objects引用指向的内存地址address1。
我们如果直接在activity中这样构造Adapter
private List<CatUnit> catUnits;
catUnitAdapter = new ArrayAdapter<CatUnit>(this.getActivity(),R.layout.custom_spiner_text_item,catUnits);
当异步请求成功回调的时候会有catUnits = 异步请求到的List。就相当于将objects指向别的地址比如addr2。
但是这时Adapter内部的mObjects 依然指向address1。所以notifyDataSetChanged无效。
针对这个问题有两种方法:
1. mObjects 指向最新的异步请求的数据的地址addressX。
java
adapter.setObjects(newObjects);
adapter.notifyDataSetChanged();
2. mObjects 依然指向第一次的objects,但是在objects通过先clear,然后addAll将最新的异步请求数据添加到address1中。
catUnits.clear(); catUnits.addAll(response); catUnitAdapter.notifyDataSetChanged();