RecyclerView - callback when view is no longer visible RecyclerView - callback when view is no longer visible android android

RecyclerView - callback when view is no longer visible


Gonna respond to myself. Best approach is add RecyclerView.OnChildAttachStateChangeListener to my RecyclerView and then handle events with my WebView when onChildViewDetachedFromWindow(View view) is called.

Example:

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();            }        }    });


One approach you may be able to use is the following:

You can use the layoutManager.findFirstVisibleItemPosition(); and layoutManager.findLastVisibleItemPosition(); to get the first and last positions that are visible on the screen. If your item does not fall between these values, then it is off the screen.

Let me know if this is what you are looking for, or if you need/want to use another approach for some reason.


The easiest way to do this is probably using a RecyclerListener - see the documentation available: https://developer.android.com/reference/android/support/v7/widget/RecyclerView.RecyclerListener.html

The callback gets onViewRecycled(RecyclerView.ViewHolder holder) so you can easily tell which views are recycled.