RecyclerView索引溢出 RecyclerView索引溢出异常的解决办法

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

RecyclerView索引溢出 RecyclerView索引溢出异常的解决办法

phantomvk   2021-03-28 我要评论
想了解RecyclerView索引溢出异常的解决办法的相关内容吗,phantomvk在本文为您仔细讲解RecyclerView索引溢出的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:RecyclerView索引溢出,RecyclerView索引异常,下面大家一起来学习吧。

使用RecyclerView过程中遇到异常:

java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder

继承并重写LinearLayoutManager.onLayoutChildren()方法

class WrappedLinearLayoutManager : LinearLayoutManager {

  constructor(context: Context) : super(context)

  constructor(context: Context, orientation: Int, reverseLayout: Boolean) : super(context, orientation, reverseLayout)

  constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)

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

调用时使用WrappedLinearLayoutManager代替LinearLayoutManager

val recyclerAdapter = RecyclerViewAdapter(activity)
val manager = WrapContentLinearLayoutManager(context).apply { orientation = LinearLayoutManager.VERTICAL }

val recyclerView = view.findViewById<RecyclerView>(R.id.recycler_view).apply {
  layoutManager = manager
  adapter = recyclerAdapter
}

猜您喜欢

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们