首页
学习
活动
专区
圈层
工具
发布

实现一个带有header和footer功能的RecyclerView

RecyclerView是Android 5.0版本引入的一个新的组件,目的是在一些场景中取代之前ListView和GridView,实现性能更优的解决方案。...我们知道RecyclerView很灵活,灵活到很多功能需要我们自己实现,比如ListView和GridView中最常用的Item点击事件。...WrapRecyclerView设置的LayoutManager是GridLayoutManager时,为其设置SpanSizeLookup,并通过position判断如果是header或footer返回...注意:这里考虑到用户也需要自定义SpanSizeLookup,所以在设置前先获取一下,如果存在则在getSpanSize中返回正确的值保证显示效果。...通过上面的处理,header和footer的功能基本完善了,如果遇到其他问题,可以参照上面两种情况进行处理。 下拉刷新 最后我们再为这个RecyclerView实现下拉刷新和加载更多功能。

2.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    关于RecyclerView你知道的不知道的都在这了(上)前言目录正文

    最近打算花点精力来研究 RecyclerView 这个控件架构和原理,对我来说,难度很大,我不清楚最后能不能彻底搞清楚,这个系列的博客会不会被太监,但我会尽我最大努力,并将这整个过程分享出来。...但是调用那两个查找全部可见的 item 方法,仍然会返回 0 和 4,因为它只去判断水平方向是否全部可见。...既然界面已经刷新了,那么数据源和界面的呈现其实就是一致的了,所以 getLayoutPosition() 返回的值就跟 getAdapterPosition() 是一致的了。...getItemId() 返回在 adapter 中通过 getItemId(int position) 为该 item 生成的 id,没有在 adapter 重写那个方法的话,就返回 RecyclerView.NO_ID...: findViewHolderForAdapterPosition() findViewHolderForLayoutPosition() findViewHolderForItemId() findContainingViewHolder

    3.6K60

    Android RecyclerView浅析(分类型)

    itemView); } } } 5.5在onCreateViewHolde中,创建一个ViewHolder(),一般为加载一个布局文件,注意此处inflate和LayoutInflater...然后根据常量来创建对应的ViewHolder(加载自己对应的布局文件),然后在根据类型绑定自己的对应的数据;所以每一中类型都要对应自己的ViewHolder,进而实现分类型;一般还有实现其有参构造为了传递和初始化相关数据...返回2不应该是2列返回1是1列吗?...(this,2);  大家看这个方法里的第二个参数,我们是不是指定了2列 而我们的头是不是返回了2然后显示了一行,没错,就是所占的列数。...今天给大家简单的介绍了一下RecyclerView的一般用法和分类的用法,一般我们开发使用最多的也就是这两种了,希望对大家能有所帮助。 Thanks all.

    1.4K20

    一篇博客理解Recyclerview的使用

    ,需要实现3个方法: a) onCreateViewHolder() 这个方法主要生成为每个Item inflater出一个View,但是该方法返回的是一个ViewHolder。...直接省去了当初的convertView.setTag(holder)和convertView.getTag()这些繁琐的步骤。...mItemClickListener.onItemClick(holder.itemView, position); } }); } } 最后粘上Adapter的全部代码,其他代码均和例子...} } } 定义了一个滚动时回调的接口,然后在onTouchEvent中,监听ACTION_MOVE,用户手指滑动时,不断把当前第一个View回调回去 关于为什么getChildAt(0)和getChildPosition...效果如下: 5.RecyclerView实现瀑布流 例子4:用RecyclerView打造瀑布流效果 其中大部分内容实现和基本的RecyclerView使用是一样的,就不多叙述了,就一个地方不同

    1.1K30

    【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 二 )

    viewHolder = mSelected; 其中 mSelected 是在第一次按下时进行的赋值 , 有了 mSelected 值后 , 开始处理滑动事件 ; 如果没有获取到 mSelected , 则直接返回...viewHolder)方法返回值 , 如果开发者没有设置 , 就使用默认值 ; 该值的作用是 设置 拖动幅度 , 组件在宽度 / 高度 上移动超过该比例 , 就认为拖动触发, 执行拖动相关操作 ;...@NonNull RecyclerView.ViewHolder target) 先获取拖动的起始位置和目标位置 , 然后传入 onMove 方法 , 触发回调 ; // 获取被拖动的目标位置...* 最后的触摸事件和初始触摸事件之间的坐标差异 , 偏移值 . */ float mDx; float mDy; private final OnItemTouchListener...DOWN / UP / CANCEL 三种动作 , MOVE 动作不拦截 // 取消操作很少遇到 // 因此 , 拦截机制中 , 只负责拦截手指按下 和

    1.8K20
    领券