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 に変更した時等は消し忘れに注意する。