youlookwhat / ByRecyclerView

🔥 RecyclerView 下拉刷新、上拉松手/自动加载更多、item点击/长按、item局部刷新、头布局/尾布局/状态布局、万能分割线、Skeleton骨架图、极简adapter、嵌套滑动置顶
https://youlookwhat.github.io/ByRecyclerView
Apache License 2.0
798 stars 139 forks source link

上拉加载更多没有复用viewHolder吗? #50

Closed Lancerer closed 2 years ago

Lancerer commented 2 years ago

打扰了大佬,我发现上拉加载每次都会生成一个新的viewHolder对象,这里没有复用吗?

youlookwhat commented 2 years ago

上拉加载使用的是单独的viewtype方式做的,现在基于recyclerview的上拉加载都是基于这种方式实现的,我的印象中是rv是按照viewtype来复用的,但是上拉加载是一个单独的viewtype,所以不存在复用的情况。

你可以放心的,这种方式基本不用考虑内存的开销。

Lancerer commented 2 years ago

我的意思是他上拉加载后生成的每一个itemView好像都是一个全新的对象,这个是不是就有点奇怪了,我用的是你的demo中 StickyRvCoordinatorActivity,每个itemView里面都有一个mediaplayer,然后每次都生成一个新的对象,快速滑动的时候mediaplayer播放会出错

youlookwhat commented 2 years ago

我觉得 你不加加载更多的功能,就用原生的RV,也是这样的情况。

这个和列表里加"倒计时功能"同理,我觉得你应该新建一个HashMap用来存储mediaplayer,存 position和mediaplayer,如果position没有就新建一个mediaplayer然后存起来;有position就直接取mediaplayer使用,然后再离开页面的时候销毁HashMap,你也可以限制HashMap的大小保障内存开销。

youlookwhat commented 2 years ago

而且我觉得你应该还要记录item播放视频对应的进度,等再次滑到那个item时直接定位到那个进度

youlookwhat commented 2 years ago

解决了吗?还有问题再提哈