我有一个带有一些视频元素的RecyclerView,每次他们离开屏幕时都会重新启动。我试过了:
recyclerView.getRecycledViewPool().setMaxRecycledViews(RecyclerViewAdapter.TYPE_VIDEO, 0);
但没有成功。我也尝试过:
holder.setIsRecyclable(false)
在我的适配器内,但视频每次都会重新启动。
有没有办法停止重新启动视频,并以某种方式暂停它们并在它们再次出现在屏幕后恢复它们?
视频是远程的,而不是本地的。我正在使用扩展TextureView的类,而不是Android的VideoView
答案 0 :(得分:0)
编辑:我很想念这个问题。请参阅下面的原始答案。
我猜你有两种可能性:
setItemViewCacheSize(int)
来增加缓存到您拥有的视频数量的查看者数量在连接/分离期间暂停和播放。每当附加/删除视图时,您都可以使用RecyclerView.OnChildAttachStateChangeListener。 这样做:
mRecyclerView.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() {
@Override
public void onChildViewAttachedToWindow(View view) {
YourTextureView yourTextureView = (YourTextureView) view.findViewById(R.id.yourvideoviewid);
if (yourTextureView != null) {
// start your video
}
}
@Override
public void onChildViewDetachedFromWindow(View view) {
YourTextureView yourTextureView = (YourTextureView) view.findViewById(R.id.yourvideoviewid);
if (yourTextureView != null) {
// stop your video
}
}
});