关于recyclerView水平滑动和垂直滑动时的崩溃问题
来源:互联网 发布:中国需要几艘航母 知乎 编辑:程序博客网 时间:2024/06/01 08:42
RecyclerView上下滑动的时候崩溃,崩溃信息如下:java.lang.IndexOutOfBoundsExceptionInconsistency detected. Invalid item position 16(offset:16).state:64android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4957)android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4913)android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2029)android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1414)android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377)android.support.v7.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1193)android.support.v7.widget.LinearLayoutManager.scrollVerticallyBy(LinearLayoutManager.java:1043)android.support.v7.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:4357)android.view.Choreographer$CallbackRecord.run(Choreographer.java:793)android.view.Choreographer.doCallbacks(Choreographer.java:606)android.view.Choreographer.doFrame(Choreographer.java:574)android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:779)android.os.Handler.handleCallback(Handler.java:739)android.os.Handler.dispatchMessage(Handler.java:95)android.os.Looper.loop(Looper.java:135)android.app.ActivityThread.main(ActivityThread.java:5601)java.lang.reflect.Method.invoke(Native Method)java.lang.reflect.Method.invoke(Method.java:372)com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)
搜遍了Google,百度,github,stackoverflow……都没有解决,经过两天研究这么解决了:
/** * 去除动画防止,防止出现recyclerView的bug * */public class MyLinearLayoutManager extends LinearLayoutManager { public MyLinearLayoutManager(Context context) { super(context); } @Override public boolean supportsPredictiveItemAnimations() { return false; } 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 (Exception e) { e.printStackTrace(); } return 0; }}
Java中如下:
MyLinearLayoutManager myLinearLayoutManager = new MyLinearLayoutManager (mContext);recyclerView.setLayoutManager(myLinearLayoutManager );
RecyclerView水平滑动的时候崩溃,崩溃信息如下:java.lang.IndexOutOfBoundsExceptionInconsistency detected. Invalid item position 16(offset:16).state:64android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4957)android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4913)android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2029)android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1414)android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377)android.support.v7.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1193)android.support.v7.widget.LinearLayoutManager.scrollHorizontanlBy(LinearLayoutManager.java:1043)android.support.v7.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:4357)android.view.Choreographer$CallbackRecord.run(Choreographer.java:793)android.view.Choreographer.doCallbacks(Choreographer.java:606)android.view.Choreographer.doFrame(Choreographer.java:574)android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:779)android.os.Handler.handleCallback(Handler.java:739)android.os.Handler.dispatchMessage(Handler.java:95)android.os.Looper.loop(Looper.java:135)android.app.ActivityThread.main(ActivityThread.java:5601)java.lang.reflect.Method.invoke(Native Method)java.lang.reflect.Method.invoke(Method.java:372)com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)
/** * 去除动画防止,防止出现recyclerView的bug * */
public class MyLinearLayoutManager extends LinearLayoutManager { public MyLinearLayoutManager(Context context) { super(context); } @Override public boolean supportsPredictiveItemAnimations() { return false; } public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) { try { super.onLayoutChildren(recycler, state); } catch (IndexOutOfBoundsException e) { e.printStackTrace(); } } @Override public int scrollHorizontallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state) { try { return super.scrollHorizontallyBy(dy, recycler, state); } catch (Exception e) { e.printStackTrace(); } return 0; }}
Java中如下:
MyLinearLayoutManager myLinearLayoutManager = new MyLinearLayoutManager (getActivity());myLinearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);rv_grid.setLayoutManager(myLinearLayoutManager );rv_grid.setAdapter(imageAdapter);
阅读全文
0 0
- 关于recyclerView水平滑动和垂直滑动时的崩溃问题
- 关于recyclerView上下滑动时的崩溃问题
- 关于recyclerView快速上下滑动时的崩溃问题
- recyclerView 嵌套水平recyclerview,水平recyclerview滑动时,禁止垂直recyclerview滑动
- js实现水平滑动和垂直滑动
- 垂直和水平滑动刻度尺
- recyclerview禁止水平滑动
- 自定义RecyclerView实现垂直滑动的ViewPager
- RecyclerView的快速滑动,导致程序崩溃
- RecyclerView刷新时滑动列表导致崩溃
- RecyclerView的拖动和滑动
- [译]使用水平和垂直滑动的UICollectionView来制作粘性的行和列
- android 十字架效果实现(水平和垂直滑动)
- Android开发——垂直水平滑动条scrollView和HorizontalScrollView的嵌套使用
- 水平垂直都可滑动的HorizontalVerticalViewPager实现
- //解决SwipeRefreshLayout和RecyclerView存在滑动冲突的问题
- 关于RecyclerView实现瀑布流,上下滑动时item之间互换位置的问题
- 关于RecyclerView实现瀑布流,上下滑动时item之间互换位置的问题
- Linux内核模块配置文件
- c#常用的类和方法
- android getMemoryClass()的使用
- vlc流程
- 关于lstm和gru的一些简单资料,讲得比较容易理解
- 关于recyclerView水平滑动和垂直滑动时的崩溃问题
- jQuery<3.2>
- Kubernetes1.6新特性:POD高级调度-POD调度器配置变化
- 多线程实现生产者与消费者模式
- iOS数组相关问题
- [NodeJS]创建HTTP、HTTPS服务器与客户端
- Phototshop清除参考线
- Kubernetes1.6新特性:POD高级调度-亲和性/反亲和性特性
- 内存泄露和内存溢出