美文网首页
android ListView和PullToRefreshLi

android ListView和PullToRefreshLi

作者: 白点黑羽 | 来源:发表于2017-06-30 14:50 被阅读0次

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);

这样就可以刷新出数据了

相关文章

网友评论

      本文标题:android ListView和PullToRefreshLi

      本文链接:https://www.haomeiwen.com/subject/dyticxtx.html