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