博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
瀑布流StaggeredGridView 下拉刷新
阅读量:7097 次
发布时间:2019-06-28

本文共 1473 字,大约阅读时间需要 4 分钟。

1.项目中用到了瀑布流,之前用的是PinterestLikeAdapterView这个控件  然后上拉加载更多跟下拉刷新用的是XListView ,但是加载更多或者下拉刷新的时候闪屏,对用户体验很不好,      于是又从网上找了一些demo,最后决定用StaggeredGridView控件

PinterestLikeAdapterView控件github  

StaggeredGridView控件github  

我参考的是StaggeredGridView+PullToRefresh实现的:

2.问题:下载下来集成到项目中,发现上拉刷新的时候,没有更新数据,调用刷新完成方法,底部没有隐藏,并且继续加载更多不会调用加载更多监听函数。

3.任何问题出现都是由原因的,跟踪源码,发现问题所在。

1).在StaggeredGridViewtrackMotionScroll方法中有对某个boolean类型值进行判断,发现loadlock为false的时候,加载更多函数才会调用。

源码如下:

  1. if (!loadlock) {  
  2.                         mLoadListener.onLoadmore();  
  3.                         loadlock = true;  
  4.                     }  



2).在更新适配器的时候会判断是否有更新数据,有更新数据loadlock才会设置成false.否则一直是true,会导致一直调用不了。代码在StaggeredGridView类中内部类AdapterDataSetObserver类的onChanged方法中,代码太多我就不贴出来了。

4.进行解决

1).在StaggeredGridView类中增加了两个方法,隐藏底部跟现实底部

  1.   public void hideFooterView(){  
  2.         if(mFooterView.getVisibility()==View.VISIBLE){  
  3.             StaggeredGridView.LayoutParams lp = new StaggeredGridView.LayoutParams(0);  
  4.             mFooterView.setLayoutParams(lp);  
  5.             mFooterView.setVisibility(View.GONE);  
  6.         }  
  7.   }  
  8.     
  9.   public void showFooterView(){  
  10. if(mFooterView.getVisibility()==View.GONE)  
  11.     mFooterView.setVisibility(View.VISIBLE);  
  12.       StaggeredGridView.LayoutParams lp = new StaggeredGridView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT);  
  13.       lp.span = Integer.MAX_VALUE;  
  14.       mFooterView.setLayoutParams(lp);  
  15. oadlock=false;  
  16.   }  


2).加载更多或者下拉刷新的时候判断是否是最后一页,最后一页的话隐藏底部   否则显示底部

  1. if(page==3){
    //假如第三页是最后一页,隐藏下拉刷新  
  2.        ptrstgv.getRefreshableView().hideFooterView();  
  3.     }else{  
  4.        mAdapter.getMoreItem();  
  5.        mAdapter.notifyDataSetChanged();  
  6.                    
  7.        ptrstgv.getRefreshableView().showFooterView();  
  8.                   
  9.        page++;  
  10.      }  



效果图如下:

你可能感兴趣的文章
自己录了一首歌,嘻嘻
查看>>
python 获取糗事百科糗事
查看>>
codeforces_731C_[dfs][并查集]
查看>>
各人博客园地址链接
查看>>
scrapy中的canonicalize_url【转】
查看>>
差分信号(Differential Signal)
查看>>
Unity3D研究院之为什么Inspector视图中脚本前面的勾选框没了
查看>>
L2-002 链表去重
查看>>
cocos2d-x 3.0 rc0 + flappybird 学习心得
查看>>
10.1综合强化刷题 Day2 morning
查看>>
洛谷——P2035 iCow
查看>>
power coefficient calculation -- post processing
查看>>
centos7上安装Hadoop集群(CentOS7+hadoop-2.8.0)
查看>>
python int() round() floor()函数的比较
查看>>
scrapy的selectors
查看>>
launcher 图标删除分析
查看>>
UILabel里字体带下划线2
查看>>
loadrunner字符串处理函数
查看>>
20165320 第四周课下补做
查看>>
布局文件中fill_parent和match_parent有什么区别?
查看>>