диффутил, который в методе areItemsTheSame проверяет что у двух элементов одна разметка. В некоторых случаях при перестановке элементов возникает indexOutOfBoundsException Inconsistency Detected, invalid item и invalid adapter view holder position,кто знает почему такое может быть? Если реализовать метод который бы проверял действительно ли это тот же айтем, то все ок, но иниересно почему такое может быть
Пеовая очевидная версия - (1) изменение списка во время пока работает дифутилс из другого треда (2) ресайклер крутят пока дифутилс работает и меняется разметка - сравн.разные элементы
Ты должен в getItemType делать проверку на нужный айтем, потом на основе этого значения создавать нужный view holder, diffs нужны для того что бы найти похожие элементы, а не узнать тип айтема
А. Там разые итемТайпс. Тогда на это и проверяй
Изменение списка происходит в одном месте, мейн тред Ресайклер не крутится,специально сделал тестовую сборку чтоб нужная перестановка происходила по кнопке
Обсуждают сегодня