RecyclerView
Question
https://www.bilibili.com/video/BV1Fi4y1x7p5?from=search&seid=3244755609076396172
RecycleView复用机制
无
问题3
适配不同类型的View布局,将用户界面显示与逻辑代码分离
无
基本使用
https://github.com/googlesamples/android-RecyclerView
http://blog.csdn.net/lmj623565791/article/details/51854533
http://blog.csdn.net/qibin0506/article/details/49716795
滑动
我们在拖动DependencyView的时候,ImageView也跟随着DependencyView移动。当然这种依赖并非只有一对一的关系,也可能是一对多或者多对多。

1 |
|
复用分析
分析onCreateViewHolder onBindViewHolder和 view是怎么复用的
https://www.jianshu.com/p/ec6585e5220d
滑动坐标
第一个左边 - 第二个坐标
所以负值 一定是往下滑
用栈数组保存不同类型回收的view
回收情况
ScrollY 第一个可见Item的左上顶点 距离屏幕左上角的距离。
顶部item回收
- 往上滑动
当顶部item滑出屏幕,ScrollY的高度等于第一个item高度时,就被滑出了屏幕。
底部item再添加
- 网上滑动
当 屏幕显示的几个Item 长度 - ScrollY 刚好等于 屏幕高度,底部item之下再开始添加item。
因为ScrollY变大.
顶部item添加
向下滑动
ScrollY = 顶部item高度,顶部添加item
底部item回收
ScrollY = 底部item高度,底部回收。
Jectpack Paging
https://developer.android.com/topic/libraries/architecture/paging
https://www.youtube.com/watch?v=BE5bsyGGLf4&t=841s
https://codelabs.developers.google.com/codelabs/android-paging/index.html?index=..%2F..%2Findex#1
ItemKeyedDataSource的子类需要实现loadInitial、loadAfter、loadBefore和getKey方法。它们分别的作用如下:
loadInitial:此方法之后在用DataSource构建PageList的时候才会调用一次。用于进行加载初始化。
loadAfter:在每次RecyclerView滑动到
底部
没有数据的时候就会调用此方法进行数据的加载。loadBefore:在每次RecyclerView滑动到
顶部
没有数据的时候就会调用此方法进行数据的加载。getKey: 这返回下一个loadAfter调用所需要用到的key。就相当于链表的指针。
https://github.com/fmtjava/Jetpack_GitHub
https://github.com/Hankkin/JetPack_Note
解释 paging diff
http://www.jeepxie.net/article/25492.html
https://www.jianshu.com/p/bbb96fc62bcd
https://www.jianshu.com/p/10bf4bf59122
https://juejin.im/post/5db06bb6518825646d79070b
Item分类
前面添加header, footer就用到了item分类
reclverview也有很多分类方式
- 使用adapter 组合设计模式,进行组装,代码简洁,比较好操作
多adapter分类
https://github.com/luizgrp/SectionedRecyclerViewAdapter
http://blog.csdn.net/wzlyd1/article/details/52292548
https://github.com/luizgrp/SectionedRecyclerViewAdapter
https://github.com/donkingliang/GroupedRecyclerViewAdapter
https://mp.weixin.qq.com/s/oCl4BQ8uB9ZDSOEKESM7hA
复杂布局: https://github.com/385841539/RecycleviewStaggered
竖直嵌套水平:https://github.com/drakeet/MultiType/issues/67
preview
1 |
|
1 |
|
问题
使用recycleView中会遇到一些问题,总结一下
- 问题1
下拉刷新 滑动列表 crash
使用下拉刷新的时候 往上滑动item会出现这样的错误
1 |
|
刷新之后数据清空,再滑动数据和item不一致, 情况数据应该在拿到数据之后, 使用下面这种方式解决问题,
1 |
|
http://blog.csdn.net/weixiao_812/article/details/78138075
下拉刷新时快速滑动崩溃的问题解决
- 问题2
界面不能展示 ,和ListView 不同的是RecyclerView不同,没设置下面的参数是不显示的
1 |
|
如果还是没有就看看 recycleview布局是否显示
https://blog.csdn.net/mjb00000/article/details/106014544
不用等数据来了后再显示
https://github.com/leobert-lan/Pandora
RecyclerView拖拽功能
https://www.jianshu.com/p/9605d14ddcc2
https://www.jianshu.com/p/b9a22f0c537d
https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf
drag禁用
https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/3378
BaseRecyclerViewAdapterHelper
getLayoutPosition getAdapterPosition区别
如果界面在notifyDataSetChanged()刷新所有数据,获取的adapterPosition 有可能会是-1,而layoutPosition获取到的还是旧的值.
如果使用但如果用的是notifyItemInserted(0),获取的adapterPosition就能立刻获取到新的值.
作者:JimmyZou92
链接:https://juejin.cn/post/6999213411204595720
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。