RecyclerView – обратный вызов, когда вид больше не отображается

У меня есть RecyclerView с его адаптером и LayoutManager. Адаптер имеет приблизительно 15 различных ViewHolders. Один из них содержит WebView, который загружает внешнее содержимое (99% из них – видео за пределами YouTube). Проблема возникает, когда какой-либо вид адаптера выходит из экрана – видео в WebView продолжает играть и воспроизводится звук. Тем не менее, это приемлемо для меня.

Ключевая проблема начинается, когда я перехожу к другому действию. Звук видео по-прежнему присутствует.

Может ли какой-либо способ RecyclerView уведомить меня, когда какой-либо из его детских представлений изменит состояние видимости (значение исчезает с дисплея)?

Solutions Collecting From Web of "RecyclerView – обратный вызов, когда вид больше не отображается"

Собираюсь ответить на меня. Лучший подход – добавить RecyclerView.OnChildAttachStateChangeListener в мой RecyclerView, а затем обработать события с помощью моего WebView, когда onChildViewDetachedFromWindow(View view) .

Пример:

 mRecyclerView.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() { @Override public void onChildViewAttachedToWindow(View view) { WebView webView = (WebView) view.findViewById(R.id.webview); if (webView != null) { webView.onResume(); } } @Override public void onChildViewDetachedFromWindow(View view) { WebView webView = (WebView) view.findViewById(R.id.webview); if (webView != null) { webView.onPause(); } } }); 

Один из подходов, который вы можете использовать, заключается в следующем:

Вы можете использовать layoutManager.findFirstVisibleItemPosition(); И layoutManager.findLastVisibleItemPosition(); Чтобы получить первую и последнюю позиции, которые видны на экране. Если ваш товар не падает между этими значениями, то он отключается от экрана.

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