RecyclerViewへのitem追加時に java.lang.IndexOutOfBoundsException: Inconsistency detected
RecyclerViewにItemを追加しようと submitList()
をすると java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder
で落ちる時の対応。
private fun showItem(newList:List<Item>){ listAdapter.submitList(newList) listAdapter.notifyDataSetChanged() }
このlistAdapterが ListAdapter<>
を継承したものの場合は notifyDataSetChanged
を呼ぶ必要がないので削除する。
submitList()
がbackground threadで実行されているためItem数の反映タイミングが合わずに IndexOutOfBoundsException
が起きるものと思われる。
毎回ではなく短い時間に複数回Item数の更新が走る時等のみ起きること、StackOverflowでは 違うスレッドから更新していないか確認
などの答えのみで解決にたどり着くまで少し時間がかかった。RecyclerView.Adapter<>
から ListAdapter
に変更した時等は消し忘れに注意する。