Разница между onViewRecycled, onDetachedFromRecyclerView и onViewDetachedFromWindow в Android - PullRequest
0 голосов
/ 27 июня 2018

У меня проблемы с пониманием терминологии, используемой официальной документацией. В частности, есть методы onViewRecycled, onDetachedFromRecyclerView и onViewDetachedFromWindow. В чем разница между этими тремя?

1 Ответ

0 голосов
/ 27 июня 2018

Есть существенная разница даже в их подписи:

onDetachedFromRecyclerView(RecyclerView recyclerView) - Вызывается RecyclerView, когда он прекращает наблюдать за этим адаптером.

Что вы могли не заметить, перед этим всегда вызывается соответствующий метод:

onAttachedToRecyclerView(RecyclerView recyclerView) - Вызывается RecyclerView, когда он начинает наблюдать за этим адаптером.

Когда вы звоните recyclerView.setAdapter(adapter), adapter получает вызов на onAttachedToRecyclerView(recyclerView). Затем следующий вызов recyclerView.setAdapter() вызовет adapter s onDetachedFromRecyclerView(recyclerView).

Обычно вам не нужно переопределять этот метод, за исключением некоторых особых обстоятельств (например, ведение учета наблюдаемых recyclerView с и т. Д.).


onViewRecycled(VH holder) намного проще, он вызывается перед отправкой viewHolder на recycleViewPool.

Вы можете думать об этом как о методе "очистки" onBindViewHolder(VH holder, int position).


onViewDetachedFromWindow(VH holder) всегда следует за совпадением onViewAttachedToWindow(VH holder). Он вызывается в точный момент, когда видоискатель становится видимым или невидимым (вызовы присоединения / отключения)

Если viewHolder был отсоединен, но еще не переработан, вполне возможно, что он может принять вызов onViewAttachedToWindow(ViewHolder) снова без необходимости перепривязывать данные с помощью onBindViewHolder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...