这个是RecyclerView 内部存在的一个明显的 bug。 java.lang.IndexOutOfBoundsException。
使用 RecyclerView 加下拉刷新的时候,如果绑定的数组对象在更新数据之前进行了 list.clear(),而这时用户紧接着迅速上滑 RecyclerView,就会崩溃。出现这个错误的原因是在刷新后清空了原有的数据并且进行了异步操作,此时滑动列表会出现数组下标越界的情况。
解决方法:
1.
下拉刷新方法:
将下拉刷新方法中的list.clear()放到请求接口里面去执行。
2.在执行下拉刷新时,也就是 clear 的同时,让 RecyclerView 暂时不能够滑动,当数据请求成功后,再允许滑动即可。这时就是事件的分发机制,在 RecyclerView 初始化的时候加上是否在刷新进而拦截手势,定义一个boolean类型的变量来控制RecyclerView是否可以滑动。
mRecyclerView.setOnTouchListener(
new
View.OnTouchListener() {
@Override
public
boolean
onTouch(View v, MotionEvent event) {
if
(IsRf) {
return
true
;
}
else
{
return
false
;
}
}
}
);