RecyclerView - callback, wenn die Ansicht nicht mehr sichtbar ist
Ich habe eine RecyclerView mit seinem Adapter und LayoutManager. Adapter hat etwa 15 verschiedene ViewHolders. Einer von Ihnen enthalten WebView lädt externe Inhalte (99% von Ihnen sind videos außerhalb von YouTube).
Das problem kommt, wenn alle Anzeigen von Adapter kommt aus dem Bildschirm - video in WebView hält, spielen und sounds zu spielen. Noch, das ist akzeptabel für mich.
Die Schlüssel problem beginnt, wenn ich zu bewegen, um eine andere Aktivität. Der sound von dem video ist noch vorhanden.
Gibt es eine Möglichkeit, RecyclerView könnten, Benachrichtigen Sie mich, wenn eines seiner Kinder Ansichten ändern der Sichtbarkeit Staat (also verschwindet aus der Anzeige)?
- RecyclerView.RecyclerListener ? oder nicht direkt durch die RecyclerView.OnScrollListener ?
InformationsquelleAutor mroczis | 2015-07-28
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gonna reagieren auf mich. Die beste Herangehensweise ist, fügen Sie
RecyclerView.OnChildAttachStateChangeListener
zu meinem RecyclerView und dann behandeln von Ereignissen mit meinem WebView, wennonChildViewDetachedFromWindow(View view)
genannt wird.Beispiel:
Einem Ansatz, den Sie nutzen können, ist die folgende:
Können Sie die
layoutManager.findFirstVisibleItemPosition();
undlayoutManager.findLastVisibleItemPosition();
um die ersten und letzten Positionen, die auf dem Bildschirm angezeigt. Wenn Ihr Artikel nicht fallen, zwischen diesen beiden Werten, dann ist es aus dem Bildschirm.Lassen Sie mich wissen, wenn dies ist, was Sie suchen, oder wenn Sie brauchen/wollen, verwenden Sie einen anderen Ansatz für einige Grund.
Der einfachste Weg, dies zu tun, ist wahrscheinlich eine
RecyclerListener
- finden Sie in der Dokumentation zur Verfügung: https://developer.android.com/reference/android/support/v7/widget/RecyclerView.RecyclerListener.htmlDen Rückruf bekommt
onViewRecycled(RecyclerView.ViewHolder holder)
so kann man leicht erkennen, welche Ansichten wiederverwendet werden.