RecycleView的瀑布流的使用

今天首先给大家分享一个关于RecycleView的加载刷新框架,地址为
https://github.com/WuXiaolong/PullLoadMoreRecyclerView
其次就是瀑布流出现的图片错位的解决。

在做上一个项目时,有需要用瀑布流的地方,第一想到的是用RecycleView
然后在实现上拉加载,和下拉刷新的地方,原本想着自己自定义做加载和刷新。但是呢,因为水平有限,照着网上写,并没有实现,后来经过坚持不懈地查找找到一个第三方框架
这个第三方框架是针对RecycleView加载刷新的比较全,从网址上也可以下载demo 里面有源码。
首先展示效果
这里写图片描述

一。
首先在build.gradle
compile ‘com.wuxiaolong.pullloadmorerecyclerview:library:1.0.7’

二。
在xml文件中

 <com.wuxiaolong.pullloadmorerecyclerview.PullLoadMoreRecyclerView
        android:id="@+id/pullLoadMoreRecyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp" />

三。
在java代码中


/*
*设置瀑布流的列数
*/
 mPullLoadMoreRecyclerView.setStaggeredGridLayout(2);
//这几句代码是防止当图片上拉加载时,再往上滑时,出现图片错位的现象
  StaggeredGridLayoutManager staggeredGridLayoutManager= (StaggeredGridLayoutManager) mPullLoadMoreRecyclerView.getLayoutManager();

staggeredGridLayoutManager.setGapStrateg(StaggeredGridLayoutManager.GAP_HANDLING_NONE);

//这是当设置防止图片错位时,解决可能出现图片上面有一段空白               
                  mPullLoadMoreRecyclerView.getRecyclerView().addOnScrollListener(new RecyclerView.OnScrollListener() {
                    @Override
                    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                        super.onScrollStateChanged(recyclerView, newState);
                        staggeredGridLayoutManager.invalidateSpanAssignments();
                    }
                });            
mPullLoadMoreRecyclerView.getRecyclerView().setLayoutManager(staggeredGridLayoutManager);
  //通过监听事件,来实现上拉加载,下拉刷新。               mPullLoadMoreRecyclerView.setOnPullLoadMoreListener(new PullLoadMoreRecyclerView.PullLoadMoreListener() {
                            @Override
                            public void onRefresh() {
                                setRefresh();
                                getData();
                            }
                            @Override
                            public void onLoadMore() {
                              pageIndex = pageIndex + 1;
                                getData();
                            }
                             private void getData() {
              new Handler().postDelayed(new Runnable() {
                                    @Override
                                    public void run() {
 jinghuaURL = Consts.jinghuaURL + pageIndex + Consts.remain;                                      mjinghuagson.getJinghuaData(jinghuaURL);                                        mjinghuagson.setListCallBack(new JinghuaGson.ListCallBack() {
  @Overrid                                        public void getLists(List<JinghuaData.DataBean> list) {       
//这是gson解析的数据通过回调传来的数据  
//这是将数据直接传到适配器的数据上,是为了保证在上拉加载的过程中能固定在自己上拉加载的地方
      mRecyclerViewAdapter.getData().addAll(list);
  mPullLoadMoreRecyclerView.setPullLoadMoreCompleted();
                                            }
                                        });
                                    }
                                }, 1000);
                            }
                            private void setRefresh() {
                mRecyclerViewAdapter.getData().clear();
                                pageIndex = 1;
                            }
                        });

由于时间因素,后续,我会将代码整理一下,再发出去。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值