使用RecyclerView过程中遇到异常:

创新互联主要从事成都网站设计、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务山亭,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
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(R.id.recycler_view).apply {
layoutManager = manager
adapter = recyclerAdapter
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。