mro*_*zis 29 android listener android-viewholder android-recyclerview
我有一个带有Adapter和LayoutManager的RecyclerView.适配器有大约15种不同的ViewHolders.其中一个包含加载外部内容的WebView(其中99%是YouTube以外的视频).当任何适配器视图离开屏幕时出现问题 - WebView中的视频继续播放并且声音正在播放.不过,这对我来说是可以接受的.
当我转移到另一个Activity时,关键问题就开始了.视频的声音仍然存在.
当任何子视图更改可见性状态(意味着从显示中消失)时,RecyclerView是否有任何方式可以通知我?
mro*_*zis 39
要回应自己.最好的方法是添加RecyclerView.OnChildAttachStateChangeListener到我的RecyclerView,然后在onChildViewDetachedFromWindow(View view)调用时使用我的WebView处理事件.
例:
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();
}
}
});
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用的一种方法如下:
您可以使用layoutManager.findFirstVisibleItemPosition();和layoutManager.findLastVisibleItemPosition();获取屏幕上可见的第一个和最后一个位置。如果您的项目不在这些值之间,则它不在屏幕上。
让我知道这是否是您正在寻找的,或者您是否出于某种原因需要/想要使用另一种方法。
| 归档时间: |
|
| 查看次数: |
13314 次 |
| 最近记录: |