ListView和PullToRefreshListView的刷新机制都一样。
如果在使用ListView 和PullToRefreshListView 不是高度问题和显示因此问题。但还是出现了数据
notifyDataSetChanged
不出来的情况。
接下来分析:
1.情况一:
image.png
数据源是mData
但你清楚数据的时候把数据源替换了:
mData = listInfo.infoList;
出错原因:这样就会导致数据源不一致使用 adapter.notifyDataSetChanged();时候数据刷新不出来。
2.情况二:
数据还是mData:
添加数据是使用
mData.clear();
mData.addAll(listInfo.infoList);
数据缘不变:
但你使用自定义刷新方法:
adapter.notifyDataSetChanged(mData);
adapter里面定义刷新方法:
public void notifyDataSetChanged(ArrayList<CollectionItemInfo> lists){if(lists != null) {list.clear();list.addAll(lists);}notifyDataSetChanged();}
出错原因:这时,数据源是mData,刷新方法传入的也是mData,list持有的就是mData
那么在list.clear()操作的时候。会把mData清空也就是list和lists都会清空。
这时notifyDataSetChanged();
也是刷新不出数据。
通过这两种情况 我知道如何正确的刷新了:
情况一正确使用:
不变数据源,数据请求得到新数据 使用:
mData.clear();
mData.addAll(listInfo.infoList);
数据源不变 使用adapter.notifyDataSetChanged(); 数据刷新出来。
情况二正确使用:
替换数据源,替换数据请求得到的新数据源:
mData = listInfo.infoList;
让后使用自定义刷新方法:
adapter.notifyDataSetChanged(mData);
这样就可以刷新出数据了
网友评论