'Is there a way to get Adapter position and index of child within "onDetachedFromWindow"?
I am implementing exoplayer in recyclerView in a way which stops other videos from playing when they are not in the window ,this requires me to set the stop and start command within onDetached from window using an "if" statement,this method is only workable when am able to get the "AdapterPosition" and "indexOfChild"....i have checked through stackoverflow for another solution but most solutions aren't very clear on the implementation but i just need help on how i can get the adapterPosition and indexofchild within "onDetachedWindow" to control the plabackState of exoplayer
below is some code from my ViewHolder to give an easy explanation on how i want to control playback state in "onDetachedWindow":
class VideoViewPagerViewHolder extends RecyclerView.ViewHolder {
CircleImageView profile;
StyledPlayerView playerView;
TextView userName;
ProgressBar progressBar;
int videoSurfaceDefaultHeight=0;
int screenDefaultHeight=0;
public VideoViewPagerViewHolder(@NonNull @NotNull View itemView) {
super(itemView);
profile = itemView.findViewById(R.id.image);
playerView = itemView.findViewById(R.id.videoView);
userName = itemView.findViewById(R.id.name);
progressBar = itemView.findViewById(R.id.progress_bar);
}
public void setData(Detail data, Integer position, SparseArray<String> storedMedia, SparseArray<ExoPlayer> storedPlayer, SparseArray<StyledPlayerView> playerView) {
storedMedia.append(position, data.getVideo());
storedPlayer.append(position, getVideoPlayer(itemView.getContext()));
playerView.append(position,getVideosource(itemView.getContext()));
}
private StyledPlayerView getVideosource(Context context) {
WindowManager wm=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
Display display=wm.getDefaultDisplay();
Point size=new Point();
display.getSize(size);
videoSurfaceDefaultHeight= size.x;
screenDefaultHeight=size.y;
playerView= new StyledPlayerView(context);
playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_ZOOM);
playerView.setUseController(false);
playerView.setShowBuffering(StyledPlayerView.SHOW_BUFFERING_WHEN_PLAYING);
return playerView;
}
private ExoPlayer getVideoPlayer(Context context) {
ExoPlayer player= new ExoPlayer.Builder(context).build();
return player;
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
