美文网首页
RecyclerView浅析

RecyclerView浅析

作者: Rick000 | 来源:发表于2017-07-05 10:29 被阅读0次

1、简介:可以把它看作是ListView、GridView等的包装产品,可以轻松实现上述俩的功能,并能用简单的code完成复杂的需求:数据加载+item间隔样式+item的增减动画+click事件(click+longclick)

2、使用RecyclerView时如果项目报错:

(1)检查ExternalLibraries下是否有RecyclerView相关信息,若没有检查SDKManageer下是否有更新

(2)在app-build.gradle中添加:compile 'com.android.support:recyclerview-v7:25.3.1'

3、操作RecyclerView的代码:

recyclerView = findView(R.id.id_recyclerview);mRecyclerView.setLayoutManager(layout);

a、LinearLayoutManager:线性布局,横向或者纵向滑动列表

b、GridLayoutManager:表格布局

c、StaggeredGridLayoutManager:流式布局,例如瀑布流效果

//设置adapter

recyclerView.setAdapter(adapter)

//设置Item增加、移除动画

recyclerView.setItemAnimator(newDefaultItemAnimator());

//添加分割线

recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.HORIZONTAL_LIST));

4、ItemDecoration:

首先要弄清楚几个名词含义,itemview、divider

方法的执行顺序

getItemOffsets(通过outRect.set(l,t,r,b)设置指定itemview的paddingLeft,paddingTop,paddingRight,paddingBottom)

->onDraw(在绘制itemview之前绘制divider)

4、具体使用详见大神文章:

Android RecyclerView 使用完全解析 体验艺术般的控件)http://blog.csdn.net/lmj623565791/article/details/45059587

上述文章在使用StaggeredGridLayoutManager ItemDecoration有两个问题:

(1)设置item间隔时最后一列右边是不需要间隔的,但是会造成最后一列和其他列的宽度不一致,可以将getItemOffsets方法中的所有mDivider.getIntrinsicWidth()替换为如下right:

int column=itemPosition%spanCount;

int right=mDivider.getIntrinsicWidth()-(column+1)*mDivider.getIntrinsicWidth()/spanCount;

PS:关于ItemDecoration的详细理解参加参见:

https://blog.piasy.com/2016/03/26/Insight-Android-RecyclerView-ItemDecoration/#fn:space-needed

(2)如果数据总数num%列数col==0,底部的divider也是不需要显示的,在isLastRow方法中修改如下:

childCount = childCount - (childCount % spanCount==0?spanCount:childCount % spanCount);

项目下载地址:https://github.com/jacksonrickq1/RecyclerViewDemo

PS(上传代码到git参考:http://www.jianshu.com/p/3e6094c15a46?_t_t_t=0.30564603745006025)

相关文章

  • Android ListView 与 RecyclerView

    Android ListView 与 RecyclerView 对比浅析:缓存机制 【备注】只用于个人收藏

  • RecyclerView回收复用机制浅析

    RecyclerView回收复用机制浅析 RecyclerView 基本上已经成为了开发中常用的一个组件,通过其提...

  • RecyclerView浅析

    A flexible view for providing a limited window into a lar...

  • RecyclerView浅析

    1、简介:可以把它看作是ListView、GridView等的包装产品,可以轻松实现上述俩的功能,并能用简单的co...

  • RecyclerView浅析

    RecyclerView是Android 5.X中新增在support-v7架包中的新组件,同时也是作为ListV...

  • 复习

    RecyclerView的缓存机制bitmap 优化性能优化view 的绘制流程浅析LRUCache原理(Andr...

  • Android RecyclerView 源码浅析

    OverView RecyclerView是Android5.0推出的新组件,可以认为是更加灵活强大的ListVi...

  • RecyclerView动画源码浅析

    本文是RecyclerView源码分析系列第四篇文章,内容主要是基于前三篇文章来叙述的,因此在阅读之前推荐看一下前...

  • RecyclerView 和 ListView 对比浅析

    一、背景 RecyclerView是谷歌官方出的一个用于大量数据集(或频繁更改的数据)列表展示的新控件,可以用来代...

  • Listview与RecyclerView对比浅析

    RecyclerView和ListView都是用于加载大量数据的控件,RecyclerView作为listview...

网友评论

      本文标题:RecyclerView浅析

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