Имеют ли значение hasStableIds и getItemId, если используется DiffUtil?
Мы используем DiffUtil.CalculateDiff
с обычаем DiffUtil.Callback
обрабатывать изменения в базовых данных.
Идентичность наших элементов довольно сложна, и поэтому мы используем пользовательскую проверку на равенство
areContentsTheSame
а такжеareItemsTheSame
,Тем не менее, адаптер имеет две вещи
hasStableIds
а такжеgetItemId
,
Проблема в том, что getItemId
возвращает long
и идентичность наших элементов не может быть объединена в long
стабильно (хотя в остальном стабильно, учитывая нашу пользовательскую проверку равенства в обратном вызове diffutil.
Вопрос в следующем:
Что делать с hasStableIds
а также getItemId
в этом случае, и используются ли они вообще, когда DiffUtil выдвигает изменения в адаптере?
1 ответ
Я не знаю, что на самом деле делает конюшня в фоновом режиме, но она используется для поддержания порядка элементов и удаления любых глючных вещей.