使用StaggeredGridLayoutManager 当手势拉伸时,会有崩溃事件发生
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(5,StaggeredGridLayoutManager.VERTICAL));
错误如下:
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at android.support.v7.widget.StaggeredGridLayoutManager$Span.calculateCachedStart
(StaggeredGridLayoutManager.java:2362)
at android.support.v7.widget.StaggeredGridLayoutManager$Span.getStartLine
(StaggeredGridLayoutManager.java:2379)
at android.support.v7.widget.StaggeredGridLayoutManager.checkSpanForGap
(StaggeredGridLayoutManager.java:382)
at android.support.v7.widget.StaggeredGridLayoutManager.hasGapsToFix
(StaggeredGridLayoutManager.java:331)
at android.support.v7.widget.StaggeredGridLayoutManager.checkForGaps
(StaggeredGridLayoutManager.java:258)
at android.support.v7.widget.StaggeredGridLayoutManager.onScrollStateChanged
(StaggeredGridLayoutManager.java:293)
at android.support.v7.widget.RecyclerView.dispatchOnScrollStateChanged(RecyclerView.java:3971)
at android.support.v7.widget.RecyclerView.setScrollState(RecyclerView.java:1194)
at android.support.v7.widget.RecyclerView.cancelTouch(RecyclerView.java:2511)
at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2489)
at android.view.View.dispatchTouchEvent(View.java:9328)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2538)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2250)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2540)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2540)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2540)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2540)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2570)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2570)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2570)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2570)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2570)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2570)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent
(PhoneWindow.java:2452)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1749)
at android.app.Activity.dispatchTouchEvent(Activity.java:2927)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2405)
at android.view.View.dispatchPointerEvent(View.java:9548)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4503)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4301)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3811)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3871)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3830)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3978)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3838)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4035)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3811)
at android.view.View
--------- beginning of system
解决方案:
换成recyclerview原生的GridLayoutManager
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(),5));