美文网首页高级UI
Android之XRecyclerView使用详解

Android之XRecyclerView使用详解

作者: 隨風cvil | 来源:发表于2019-08-20 18:30 被阅读0次

XRecyclerView是实现了下拉刷新、滚动到底部加载更多和自定义添加header等多个特点于一身的第三方库,使用方式和RecyclerView完全一致,不需要额外的layout,不需要写特殊的adater。 加载效果内置了AVLoadingIndicatorView上的所有效果,可以根据需要指定。

项目地址:https://github.com/jianghejie/XRecyclerView

效果展示:

首先添加在项目buid.gradle上添加依赖地址

//1.5.9 is the main

implementation'com.android.support:multidex:1.0.1'

创建方式和平常的RecyclerView一样

LinearLayoutManagerlayoutManager=newLinearLayoutManager(getActivity());

layoutManager.setOrientation(LinearLayoutManager.VERTICAL);

mRecyclerView.setLayoutManager(layoutManager);

mRecyclerView.setAdapter(mAdapter);

下拉刷新、上拉加载更多:

上拉和下拉都是默认就可以使用的(如果需要关闭该功能需要代码中设置),XRecyclerView中提供一个回调去触发下拉和上拉事件

mRecyclerView.setLoadingListener(newXRecyclerView.LoadingListener() {

       @Override

       publicvoidonRefresh() {

             //refresh data here

       }

       @Override

       publicvoidonLoadMore() {

             //load more data here

       }

});

1.5.7版本的新功能

mRecyclerView

         .getDefaultRefreshHeaderView()//获取默认的头部布局

         .setRefreshTimeVisible(true);//展示刷新时间,false为不展示

          //if you are not sure that you are 100% going to

          //have no data load back from server anymore,do not use this

         @Deprecated

         public void setEmptyView(ViewemptyView) {

                 ...

         }

1.5.6版本新功能,解决内存泄漏问题,使用下面的代码释放XRecyclerView的内存

//any time,when you finish your activity or fragment,call this below

if(mRecyclerView!=null){ 

          mRecyclerView.destroy();//这行代码将完全释放XR的内存

          mRecyclerView=null;

}

1.5.3版本新功能,可以在粘性滚动布局使用XR

<com.jcodecraeer.xrecyclerview.StickyScrollLinearLayout

     android:id="@+id/StickyScrollLinearLayout"

     android:orientation="vertical"

     android:layout_width="match_parent"

     android:layout_height="match_parent">

     <com.jcodecraeer.xrecyclerview.XRecyclerView

          android:id="@+id/XRecyclerView"

          android:layout_width="match_parent"

          android:layout_height="match_parent">

     </com.jcodecraeer.xrecyclerview.StickyScrollLinearLayout>

finalStickyScrollLinearLayouts=

(StickyScrollLinearLayout) findViewById(R.id.StickyScrollLinearLayout);

s.addOnLayoutChangeListener(

         newView.OnLayoutChangeListener() {

        @Override

        public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {

        if(s.getContentView()!=null)

        return;

       //放在这里是为了等初始化结束后再添加,防止 height 获取 =0

       //add from here just in cause they height==0

      s.setInitInterface(

      newStickyScrollLinearLayout.StickyScrollInitInterface() {

      @Override

      publicViewsetTopView() {

      returntopView;

                                    }

     @Override

     publicViewsetTabView() {

     returntabView;

                                    }

    @Override

    publicViewsetContentView() {

    returncontent;

                                    }

                                }

                        );

    }

    }

通知移除item、通知插入item,记得使用XRecyclerview内部的功能

listData.remove(pos);

mRecyclerView.notifyItemRemoved(listData,pos);

当然当下拉刷新或上拉加载更多结束后,你必须通知RecyclerView,你可以使用

mRecyclerView.loadMoreComplete();//通知上拉加载结束

mRecyclerView.refreshComplete();//通知下拉刷新结束

最好控制一个屏幕中item的数量是集合的长度减2(list.size-2)的时候进行刷新

mRecyclerView.setLimitNumberToCallLoadMore(2);//默认是 1

效果如下:

手动调用刷新(使用refresh() 替代了先前的setRefreshing()方法)

mRecyclerView.refresh();

自定义下拉和上拉的样式style

下拉刷新和上拉加载更多可以更好的自定义

自定义加载样式

使用内置的AVLoadingIndicatorView,在AVLoadingIndicatorView库中提供了所有的效果,此外我们添加了系统样式,你可以使用

mRecyclerView.setRefreshProgressStyle(int style);

mRecyclerView.setLaodingMoreProgressStyle(int style);

分别设置下拉刷新进度样式和上拉加载更多进度样式

下面展示一些常用进度样式效果:

mRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);

mRecyclerView.setLaodingMoreProgressStyle(ProgressStyle.SquareSpin);

BallPulse 效果

 在ProgressStyle class中我们可以看到所有的效果,你可以选择自己喜欢的在自己的项目代码中使用

publicclassProgressStyle{

     publicstaticfinalintSysProgress=-1;

     publicstaticfinalintBallPulse=0;

     publicstaticfinalintBallGridPulse=1;

     publicstaticfinalintBallClipRotate=2;

     publicstaticfinalintBallClipRotatePulse=3;

     publicstaticfinalintSquareSpin=4;

     publicstaticfinalintBallClipRotateMultiple=5;

     publicstaticfinalintBallPulseRise=6;

     publicstaticfinalintBallRotate=7;

     publicstaticfinalintCubeTransition=8;

     publicstaticfinalintBallZigZag=9;

     publicstaticfinalintBallZigZagDeflect=10;

     publicstaticfinalintBallTrianglePath=11;

     publicstaticfinalintBallScale=12;

     publicstaticfinalintLineScale=13;

     publicstaticfinalintLineScaleParty=14;

     publicstaticfinalintBallScaleMultiple=15;

     publicstaticfinalintBallPulseSync=16;

     publicstaticfinalintBallBeat=17;

     publicstaticfinalintLineScalePulseOut=18;

     publicstaticfinalintLineScalePulseOutRapid=19;

     publicstaticfinalintBallScaleRipple=20;

     publicstaticfinalintBallScaleRippleMultiple=21;

     publicstaticfinalintBallSpinFadeLoader=22;

     publicstaticfinalintLineSpinFadeLoader=23;

     publicstaticfinalintTriangleSkewSpin=24;

     publicstaticfinalintPacman=25;

     publicstaticfinalintBallGridBeat=26;

     publicstaticfinalintSemiCircleSpin=27;

}

刷新箭头icon

如果你不喜欢的话也可以使用下面代码替换掉

mRecyclerView.setArrowImageView(R.drawable.iconfont_downgrey);

使下拉刷新和上拉加载更多失效

mRecyclerView.setPullRefreshEnabled(false);

或者

mRecyclerView.setPullRefreshEnabled(true);

Viewheader=LayoutInflater.from(this).inflate(R.layout.recyclerview_header, (ViewGroup)findViewById(android.R.id.content),false);

给XRecyclerView添加头部布局,只需调用addHeaderView().

mRecyclerView.addHeaderView(header);

当然你喜欢的话也可以添加多个头部布局

Viewheader=LayoutInflater.from(this).inflate(R.layout.recyclerview_header, (ViewGroup)findViewById(android.R.id.content),false);

Viewheader1=LayoutInflater.from(this).inflate(R.layout.recyclerview_header1, (ViewGroup)findViewById(android.R.id.content),false);

mRecyclerView.addHeaderView(header);

mRecyclerView.addHeaderView(header1);

相关文章

网友评论

    本文标题:Android之XRecyclerView使用详解

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