美文网首页
数组下标越界

数组下标越界

作者: 小赵不在 | 来源:发表于2020-12-15 14:25 被阅读0次

报错信息如下

java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 20(offset:20).state:23 androidx.recyclerview.widget.RecyclerView{9e04832 VFED..C.. .F....ID 74,134-1846,1122 #7f09019e app:id/recyclerView}, adapter:com.djt.launcher.module.main.moreapp.MoreAppFragment$onGetAppInfoList$1$adapter$1@32a2983, layout:androidx.recyclerview.widget.GridLayoutManager@febc700, context:com.djt.launcher.module.main.moreapp.MoreAppActivity@502a8b8
    at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6183)
    at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
    at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
    at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
    at androidx.recyclerview.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:561)
    at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
    at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
    at androidx.recyclerview.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851)
    at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404)
    at android.view.View.layout(View.java:20848)
    at android.view.ViewGroup.layout(ViewGroup.java:6264)
    at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1915)
    at android.view.View.layout(View.java:20848)
    at android.view.ViewGroup.layout(ViewGroup.java:6264)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at android.view.View.layout(View.java:20848)
    at android.view.ViewGroup.layout(ViewGroup.java:6264)
    at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1915)
    at android.view.View.layout(View.java:20848)
    at android.view.ViewGroup.layout(ViewGroup.java:6264)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at android.view.View.layout(View.java:20848)
    at android.view.ViewGroup.layout(ViewGroup.java:6264)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
    at android.view.View.layout(View.java:20848)
    at android.view.ViewGroup.layout(ViewGroup.java:6264)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at android.view.View.layout(View.java:20848)
    at android.view.ViewGroup.layout(ViewGroup.java:6264)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
    at android.view.View.layout(View.java:20848)
    at android.view.ViewGroup.layout(ViewGroup.java:6264)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at com.android.internal.policy.DecorView.onLayout(DecorView.java:754)
    at android.view.View.layout(View.java:20848)
    at android.view.ViewGroup.layout(ViewGroup.java:6264)
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2922)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2437)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1533)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7455)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:953)
    at android.view.Choreographer.doCallbacks(Choreographer.java:765)
    at android.view.Choreographer.doFrame(Choreographer.java:697)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:939)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6702)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)

我使用的是GridLayoutManager遇到的这种数组下标越界,于是我绞尽脑汁(其实也没有 哈哈哈),从网上搜寻为啥,找了半天,也没说因为个啥,就只有解决方案,如下:

 recyclerView.layoutManager = MyGridLayoutManager(activity, 6)
/**
 * 自己复写MyGridLayoutManager类,避免了由RecyclerView可能出现的holder数组越界Bug
 */

class MyGridLayoutManager(
    context: Context?,
    spanCount: Int

) : GridLayoutManager(context, spanCount) {

    override fun onLayoutChildren(
        recycler: Recycler,
        state: RecyclerView.State
    ) {
        try {
            super.onLayoutChildren(recycler, state)
        } catch (e: IndexOutOfBoundsException) {
            e.printStackTrace()
        }
    }
}

相关文章

  • java.lang.ArrayIndexOutOfBoundsE

    名字上看是数组下标越界错误,解决方法就是查看为什么下标越界。 如下: 12代表越界数组的下标, originalD...

  • kotlin精讲-第5章(7)数组下标越界问题

    数组下标越界,可以说是数组操作的一个经典问题。是什么数组下标越界呢?我们在用数组下标去获取元素的时候,如果给定的下...

  • 数组下标越界

    报错信息如下 我使用的是GridLayoutManager遇到的这种数组下标越界,于是我绞尽脑汁(其实也没有 哈哈...

  • 异常——java学习之⑨

    1,常见异常 ArrayIndexOutOfBoundsException,数组下标越界异常 NullPointe...

  • JS数组

    一、三不限 不限制数组类型。 不限制下标越界。获取元素值时,下标越界不报错,返回undefined。 不限制元素个...

  • java基础2

    print\println\printf的区别 数组 数组的赋值 数组的复制,要避免数组下标越界 数组的扩容数组的...

  • java利用list将数组去重

    Java数组与Javascript数组不同点:必须指定存放数据类型、必须指定长度、存在数组下标越界报错。

  • object-c运行常见错误

    第一种错误 集合输出中,产生下标越界错集合是检查下标越界的原则,而C语言数组没有 第二种错误 头文件被修改(原因可...

  • 数组 - Array

    新建数组 数组的下标是从0开始 Java中,访问数组注意是否越界 打擂台算法Example:找出数组中前两大的数 ...

  • JavaDay5

    数组的遍历和长度属性 数组的内存图 两个数组的内存图 两个变量指向一个数组 数组越界异常 下标超过了数组lengt...

网友评论

      本文标题:数组下标越界

      本文链接:https://www.haomeiwen.com/subject/zklwgktx.html