alibaba / vlayout

Project vlayout is a powerfull LayoutManager extension for RecyclerView, it provides a group of layouts for RecyclerView. Make it able to handle a complicate situation when grid, list and other layouts in the same recyclerview.
http://tangram.pingguohe.net/
MIT License
10.8k stars 1.79k forks source link

调用LayoutHelper.setBgColor()后下拉刷新无效。RecycleView.getChildAdapterPosition()返回值异常 #489

Closed forwzk closed 4 years ago

forwzk commented 4 years ago

工程中使用VLayout结合PullToRefresh实现的下拉刷新功能,但一旦在某个Adapter中调用了layoutHelper.setBgColor(),下拉刷新功能就会失去作用没有反应。经过debug,在调用RecycleView.getAdapterPosition()中返回了 -1 造成操作监听中断的。 另外,经过测试,如果连续两次更新组件页面,如果某个Adapter调用了LayoutHelper.setBgColor(),第二次绘制UI时RecyclerView中会报一个空指针的错误。同样是因为RecycleView.getAdapterPosition()中返回了 -1。

forwzk commented 4 years ago

https://github.com/alibaba/vlayout/issues/467

forwzk commented 4 years ago

已经解决。参考源码 FAQ文档中的:下拉刷新,有很多框架是通过判断 RecyclerView 的第一个 view 的 top 是否为 0 来触发下拉动作。VLayout 里在处理背景、悬浮态的时候加入了一些对 LayoutManager 不可见的 View,但又真实存在与 RecyclerView 的视图树里,建议使用 layoutManager.getChildAt(0) 来获取第一个 view。