RecyclerView的五大开源项目-解决办法
前段时间做项目由于采用的MD设计,所以必须要使用RecyclerView全面代替ListView。但是开发中遇到了需要实现RecyclerView上拉加载、下拉刷新和添加Header以及Footer等需求问题,现将问题解决中用到的五大开源项目总结下来,方便他人。
首先介绍下RecyclerView,RecyclerView相比ListView增加了很多新特性:
? Adapter中的ViewHolder模式 - 对于ListView来说,通过创建ViewHolder来提升性能并不是必须的。因为ListView并没有严格的ViewHolder设计模式。但是在使用RecyclerView的时候,Adapter必须实现至少一个ViewHolder,必须遵循ViewHolder设计模式。
? 定制Item条目 - ListView只能实现垂直线性排列的列表视图,与之不同的是,RecyclerView可以通过设置RecyclerView.LayoutManager来定制不同风格的视图,比如水平滚动列表或者不规则的瀑布流列表。
? Item动画 - 在ListView中没有提供任何方法或者接口,方便开发者实现Item的增删动画。相反地,可以通过设置RecyclerView的RecyclerView.ItemAnimator来为条目增加动画效果。
? 设置数据源 - 在LisView中针对不同数据封装了各种类型的Adapter,比如用来处理数组的ArrayAdapter和用来展示Database结果的CursorAdapter。相反地,在RecyclerView中必须自定义实现RecyclerView.Adapter并为其提供数据集合。
? 设置条目分割线 - 在ListView中可以通过设置android:divider属性来为两个Item间设置分割线。如果想为RecyclerView添加此效果,则必须使用RecyclerView.ItemDecoration,这种实现方式不仅更灵活,而且样式也更加丰富。
? 设置点击事件 - 在ListView中存在AdapterView.OnItemClickListener接口,用来绑定条目的点击事件。但是,很遗憾的是在RecyclerView中,并没有提供这样的接口,不过,提供了另外一个接口RcyclerView.OnItemTouchListener,用来响应条目的触摸事件。
但是……,RecyclerView不像ListView那样拥有Header和Footer,因此开发中需要我们自己去实现Header和Foote,另外开发中小伙伴们经常使用的PullToRefresh库暂时又不支持RecyclerView。和身边的很多小伙们一样,我也陷入了困境,为了不拖累项目进度,我决定亲自解(shi)决(yong)难(kai)题(yuan),做一个伸手党。
现在将我发现的GitHub上优秀的Header、Footer、上拉加载和下拉刷新解决方案汇总如下:
(一) SwipeToLoadLayout-推荐使用
GitHub地址:https://github.com/Aspsine/SwipeToLoadLayout
SwipeToLoadLayout支持YouTube、Google、京东等多家APP基于RecyclerView的上拉加载和下拉刷新样式,,好用的不要不要的。废话不多说,直接上图:
? ListView & GridView
? RecyclerView(With all kinds of layoutManagers)
? WebView & ScrollView & Other Views
? Google SwipeRefreshLayout style
? 京东style
? Yalantis Phoenix 样式
AndroidStudio配置方法
第一步:在你的build.gradle添加JitPack库在
repositories {
maven { url “https://jitpack.io” }
}
第二部:添加依赖库
dependencies {
compile ‘com.github.Aspsine:SwipeToLoadLayout:v1.0.2’
}
(二) UltimateRecyclerView-大名鼎鼎
GitHub地址:https://github.com/cymcsg/UltimateRecyclerView
UltimateRecyclerView是解决RecyclerView下拉刷新,加载更多,增加头部,显示或隐藏工具栏等许多问题的知名开源框架。
包含特性如下:
? Swipe to refresh(using android.support.v4.widget.SwipeRefreshLayout)
? Many kinds of animations
? Swipe to dismiss
? Parallax or normal head view
? Drag and drop items
? Loading more when reach the last item(infinite scrolling)
? Custom views in loading more
? Showing or hiding toolbar and floating button when scrolling
? Scrollbars
? Colorful styles of swipe to refresh
? Sticky header like instagram
? Support different layout in adapter
? Loading adapter with animation
使用效果如下:
AndroidStudio配置方法
第一步:在你的build.gradle添加库
repositories {
jcenter()
maven { url "http://dl.bintray.com/jjhesk/maven" }
}
第二步:添加依赖库
dependencies{
compile 'com.hkm.slidingmenulib:libmenu:0.4.9'
}
第三步:布局文件中使用方法
(三) IRecyclerView-效果最炫
GitHub地址:https://github.com/Aspsine/IRecyclerView
IRecyclerView支持RecyclerView下拉刷新,上拉加载,定制Header和Footer。
包含特性如下:
? pull-to-refresh
? pull-to-loadmore
? customize refresh header
? customize loadmore footer
? add multiple header view
? add multiple footer view
使用效果如下:
刷新效果
AndroidStudio配置方法
第一步:在你的build.gradle添加库
repositories:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
第二步:添加依赖库
dependencies {
compile 'com.github.Aspsine:IRecyclerView:0.0.2'
}
第三步:布局文件中使用方法
第四步:Activity/Fragment中使用
IRecyclerView iRecyclerView = (IRecyclerView) findViewById(R.id.iRecyclerView);
iRecyclerView.setLayoutManager(new LinearLayoutManager(this));
// an custom footer view, you can customize it yourself.
LoadMoreFooterView loadMoreFooterView = (LoadMoreFooterView) iRecyclerView.getLoadMoreFooterView();
// you can also add header and footer like this
// note: header and refresh header are different, footer and load more footer are different too.
iRecyclerView.addHeaderView(headerView);
iRecyclerView.addFooterView(footerView);
// adapter
ImageAdapter mAdapter = new ImageAdapter();
// note: here use setIAdapter(...) method not setAdapter(...)
iRecyclerView.setIAdapter(mAdapter);
iRecyclerView.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
}
});
iRecyclerView.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void o
您可能想查找下面的文章:
- 从头开始学RecyclerView(六)LayoutManager
- AndroidStudio下使用 RecyclerView xml文件不显示预览条目并报错类似:NoClassDefFoundError 问题解决,studiorecyclerview
- 解析View的getDrawingCache方法,getdrawingcache
- 从源码角度入手实现RecyclerView的Item点击事件,recyclerviewitem
- 在Kotlin编写RecyclerView适配器(KAD 16),kotlinrecyclerview
- 【RecyclerView与Glide】实现一个Android电子书阅读APP,gliderecyclerview
- 深入理解 Android 之 View 的绘制流程,androidview
- Android之RecyclerView的原生Bug-Inconsistency detected. Invalid view holder adapter positionViewHolder{a1bbfa3 position=2 id=-1, oldPos=-1, pLpos:-1 no parent},recyclerviewholder
- RecyclerView在软键盘弹出时自动调整内容技巧,recyclerview技巧
- RecyclerView的五大开源项目-解决办法