快速滑动,并且切换数据,会导致崩溃,这个bug是RecyclerView本身存在的,网上也有很多解决方法,但我试都没有效果,后来发现try catch RecyclerView的动画会捕获这个异常,于是自定义LinearLayoutManager完美解决。
public class MyLinearLayoutManager extends LinearLayoutManager {
public MyLinearLayoutManager(Context context) {
super(context);
}
public MyLinearLayoutManager(Context context, int orientation, boolean reverseLayout) {
super(context, orientation, reverseLayout);
}
public MyLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
try {
super.onLayoutChildren(recycler, state);
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
}
}
@Override
public int scrollVerticallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state) {
try {
return super.scrollVerticallyBy(dy, recycler, state);
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
}
return 0;
}
}
本文介绍了一个自定义LinearLayoutManager的方法来解决快速滑动RecyclerView时出现的崩溃问题。通过重写onLayoutChildren和scrollVerticallyBy方法并添加异常捕获,可以有效避免因IndexOutOfBoundsException导致的应用崩溃。
1391

被折叠的 条评论
为什么被折叠?



