nuptboyzhb / SuperSwipeRefreshLayout

A custom SwipeRefreshLayout to support the pull-to-refresh featrue.RecyclerView,ListView,GridView,NestedScrollView,ScrollView are supported.
Apache License 2.0
1.24k stars 350 forks source link

上下拉时崩溃问题 #45

Closed glmsb closed 7 years ago

glmsb commented 7 years ago

先上拉加载之后,再去下拉刷新,应用崩溃,demo也存在这个问题,然后studio中给出的错误位置是在onLayout()中的 child.layout(childLeft, childTop, childLeft + childWidth, childTop + childHeight);// 更新目标View的位置,错误原因是说数组下标越界。希望大神们帮助解决一下,谢谢啦

glmsb commented 7 years ago

后面发现问题是在RecyclerView中,holder.position=mAdapter.getItemCount(),所以导致报错,但是还没有找到怎么解决这个问题,望赐教。。

glmsb commented 7 years ago

最后发现问题所在是因为我调用了notifyDataRangeChanged(0,list.size()),这样就会导致在上拉加载过程中adapter中getItemCount方法的返回值改变(变大),然后再下拉刷新结束之后调用notifyDataRangeChanged(0,list.size())更新数据集时,list.size()<getItemCount(),没有及时跟新getItemcount(),所以就会报空指针异常,现在暂时用notifyDataChanged方法来通知adapter数据集有改变,这样就会同步更新getItemCount的值,不过缺点就是用不了recyclerView的动画和节省内存等优点。