I'm with a noob problem and I need your help, I even tried to use Singleton Pattern, but nothing :( Show you my code below:
This is a class called VideoItemAdapter who extends RecyclerView.Adapter<VideoItemAdapter.VideoViewHolder>
Here my code: from this Class
public class VideoItemAdapter extends RecyclerView.Adapter<VideoItemAdapter.VideoViewHolder> {
private List<VideoItem> videoItems;
public List<VideoItem> getVideoItems() {
return this.videoItems;
}
public void setVideoItems(List<VideoItem> videoItems) {
this.videoItems = videoItems;
}
public VideoItemAdapter(List<VideoItem> videoItems) {
this.videoItems = videoItems;
}
@NonNull
@Override
public VideoViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new VideoViewHolder(
LayoutInflater.from(parent.getContext()).inflate(
R.layout.item_container_video,
parent,
false
)
);
}
@Override
public void onBindViewHolder(@NonNull VideoViewHolder holder, int position) {
holder.setVideoData(videoItems.get(position));
}
@Override
public int getItemCount() {
return videoItems.size();
}
static class VideoViewHolder extends RecyclerView.ViewHolder{
VideoView videoView;
TextView textVideoTitle, textVideoDescription;
ProgressBar videoProgressBar;
public VideoViewHolder(@NonNull View itemView) {
super(itemView);
videoView = itemView.findViewById(R.id.videoView);
textVideoTitle = itemView.findViewById(R.id.textVideoTitle);
textVideoDescription = itemView.findViewById(R.id.textVideoDescription);
videoProgressBar = itemView.findViewById(R.id.videoProgressBar);
}
void setVideoData(VideoItem videoItem){
textVideoTitle.setText(videoItem.videoTitle);
textVideoDescription.setText(videoItem.videoDescription);
videoView.setVideoPath(videoItem.videoURL);
MediaPlayer mediaPlayer;
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
videoProgressBar.setVisibility(View.GONE);
mp.start();
}
});
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.start();
}
});
}
}
}
And I'd like to manipule the MediaPlayer in my MainActivity, for example, I need to stop or start the media player when a button in MainActivity Xml is pressed, it will make my life easier... there is my code in MainActivity:
final ViewPager2 videosViewPager = findViewById(R.id.videosViewPager);
List<VideoItem> videoItems = new ArrayList<>();
VideoItem video1 = new VideoItem();
video1.videoURL = ...
VideoItemAdapter videoItemAdapter = new VideoItemAdapter(videoItems);
videosViewPager.setAdapter(videoItemAdapter);
And I need to get the "(MediaPlayer mp)", someone can give me some help I'm newbie programming... >.<
Oh, if you can give some a Class to manage this MediaPlayer, I'll be happy :)