Имеют ли значение hasStableIds и getItemId, если используется DiffUtil? - PullRequest
0 голосов
/ 08 марта 2019

Мы используем DiffUtil.CalculateDiff с пользовательским DiffUtil.Callback для обработки изменений базовых данных.

  • Идентичность наших элементов довольно сложна, и поэтому мы используем пользовательскую проверку равенства в areContentsTheSame и areItemsTheSame.

  • Однако адаптер имеет две вещи hasStableIds и getItemId.

Проблема в том, что getItemId возвращает long, и идентичность наших элементов не может быть устойчиво сопоставлена ​​с long (хотя в остальном стабильна, учитывая нашу пользовательскую проверку равенства в обратном вызове diffutil.

Вопрос такой:

Что делать с hasStableIds и getItemId в этом случае, и используются ли они вообще, когда DiffUtil выдвигает изменения в адаптере?

1 Ответ

0 голосов
/ 08 марта 2019

Я не знаю, что на самом деле делает конюшня в фоновом режиме, но она используется для поддержания порядка элементов и удаления любых глючных вещей.

...