美文网首页
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