1

I am working on slide video with view pager, pager adapter functionality. my view pager holds Video view and play video button to display video and play video from gallery. i have implemented pager adapter to display video.

Problem is when my current item position is 0 at that time i am trying to play video i click on play button but video will not play and button image not replace with stop icon. when i swipe a view at that moment item on position 1 automatically show play button with stop icon and we can see video. and another swipe will perform random functionality possibility play video or will not play video. how i can overcome from this problem plz help and guide me to solve this issue.

Thank You in Advance.

here i am posting my pager adapter class

public class SlideImageAdapter extends PagerAdapter {

    private ArrayList<String> VIDEOS;
    private LayoutInflater inflater;
    private Context context;

    private VideoView mVideoView;
    private ImageView mImageView;

    private ImagePickerActivity activity;

    private boolean isPlaying = false;


    public SlideImageAdapter(Context context, ArrayList<String> IMAGES) {
        this.context = context;
        this.VIDEOS = IMAGES;
        inflater = LayoutInflater.from(context);
        activity = ImagePickerActivity.getInstance();
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }

    @Override
    public int getCount() {
        return VIDEOS.size();
    }

    @Override
    public Object instantiateItem(ViewGroup view, int position) {

        View imageLayout = inflater.inflate(R.layout.row_slide_image_item, view, false);

        assert imageLayout != null;
        mImageView = imageLayout.findViewById(R.id.mPlayVideo);
        mVideoView = imageLayout.findViewById(R.id.mVideoView);

        mImageView.setVisibility(View.VISIBLE);


        mImageView.setOnClickListener(view1 -> {
            //For Testing only to check click event 

            if (isPlaying){
                Toast.makeText(context, "Player request to stop", Toast.LENGTH_SHORT).show();
                isPlaying = false;
                mImageView.setImageResource(R.drawable.ic_play_button);
            } else {
                Toast.makeText(context, "Player request to play", Toast.LENGTH_SHORT).show();
                isPlaying = true;
                mImageView.setImageResource(R.drawable.ic_stop);

            }

        });

        DisplayMetrics displayMetrics = new DisplayMetrics();
        (activity).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        int height = displayMetrics.heightPixels;
        int width = displayMetrics.widthPixels;


        DebugLog.e("MSG: ==> " + "WIDTH: " + width + " | HEIGHT: " + height);
        DebugLog.e("MSG: " + VIDEOS.get(position));
        File file = new File(VIDEOS.get(position));

        Uri videoUri = null;

        if (Build.VERSION.SDK_INT >= 26) {
            videoUri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".provider", file);
        } else {
            videoUri = Uri.fromFile(file);
        }

        try {

            mVideoView.setMediaController(new MediaController(activity));
            mVideoView.requestFocus();
            mVideoView.setVideoURI(videoUri);
            mVideoView.seekTo(100);
                 mVideoView.setOnCompletionListener(mediaPlayer -> {
                     mediaPlayer.start();
                 });

        } catch (Exception ex) {
            ex.printStackTrace();
            DebugLog.e(ex.getMessage());
        }



        if (mVideoView.isPlaying()){
            mVideoView.stopPlayback();
            mImageView.setImageResource(R.drawable.ic_play_button);
        }
        mImageView.setVisibility(View.VISIBLE);


            mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) {
                mImageView.setImageResource(R.drawable.ic_play_button);
            }
        });





        view.addView(imageLayout, 0);

        return imageLayout;
    }


    @Override
    public int getItemPosition(@NonNull Object object) {
        return POSITION_NONE;
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }

    @Override
    public void restoreState(Parcelable state, ClassLoader loader) {
    }

    @Override
    public Parcelable saveState() {
        return null;
    }


    @Override
    public void finishUpdate(@NonNull ViewGroup container) {
        super.finishUpdate(container);
    }
}
Dens
  • 125
  • 11

0 Answers0