Closed forwzk closed 4 years ago
工程中使用VLayout结合PullToRefresh实现的下拉刷新功能,但一旦在某个Adapter中调用了layoutHelper.setBgColor(),下拉刷新功能就会失去作用没有反应。经过debug,在调用RecycleView.getAdapterPosition()中返回了 -1 造成操作监听中断的。 另外,经过测试,如果连续两次更新组件页面,如果某个Adapter调用了LayoutHelper.setBgColor(),第二次绘制UI时RecyclerView中会报一个空指针的错误。同样是因为RecycleView.getAdapterPosition()中返回了 -1。
https://github.com/alibaba/vlayout/issues/467
已经解决。参考源码 FAQ文档中的:下拉刷新,有很多框架是通过判断 RecyclerView 的第一个 view 的 top 是否为 0 来触发下拉动作。VLayout 里在处理背景、悬浮态的时候加入了一些对 LayoutManager 不可见的 View,但又真实存在与 RecyclerView 的视图树里,建议使用 layoutManager.getChildAt(0) 来获取第一个 view。
RecyclerView
LayoutManager
layoutManager.getChildAt(0)
工程中使用VLayout结合PullToRefresh实现的下拉刷新功能,但一旦在某个Adapter中调用了layoutHelper.setBgColor(),下拉刷新功能就会失去作用没有反应。经过debug,在调用RecycleView.getAdapterPosition()中返回了 -1 造成操作监听中断的。 另外,经过测试,如果连续两次更新组件页面,如果某个Adapter调用了LayoutHelper.setBgColor(),第二次绘制UI时RecyclerView中会报一个空指针的错误。同样是因为RecycleView.getAdapterPosition()中返回了 -1。