P. Jaiswal
P. Jaiswal

Reputation: 205

ProgressBar is not visible for all positions in CardView

I'm trying to add youtube player API and in that when click event occurs on thumbnail visibility gone and progress bar appears and when Video started playing then progress bar is gone. Initially ProgressBar is gone.

layout.xml

<RelativeLayout
            android:id="@+id/rl"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/hr"
            android:layout_centerHorizontal="true"
            android:gravity="center_horizontal">


            <com.example.prateek.videoplayertest.YoutubePlayerView        
                android:id="@+id/ytplayer"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:layout_centerVertical="true"
                android:layout_marginLeft="-3dp"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop">

                <ImageView
                    android:id="@+id/yt_thumbnail"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_alignParentTop="true"
                    android:layout_marginLeft="-3dp"
                    android:adjustViewBounds="true"
                    android:background="#000000"
                    android:scaleType="fitXY">
                </ImageView>
            </com.example.prateek.videoplayertest.YoutubePlayerView>

            <ProgressBar
                android:id="@+id/item_progress"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:foregroundGravity="center"
                android:indeterminate="true"
                android:visibility="gone"
                android:layout_centerInParent="true" />


        </RelativeLayout>

RecyclerAdapter.java

@Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {

Picasso.with(context).load(video_thumbnail.get(position)).memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE).into(holder.yt_video_thumb);
                holder.ytplayer.setVisibility(View.VISIBLE);
                holder.ytplayer.setAutoPlayerHeight(context);

                final YTParams params = new YTParams();
                params.setPlaybackQuality(PlaybackQuality.small);
                holder.yt_video_thumb.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        holder.flag_y = 1;
                        if(holder.flag_x == 1 && holder.flag_y == 1){
                            holder.ytplayer.play();
                        }
                            holder.yt_video_thumb.setVisibility(View.GONE);
                            holder.yt_progress.setVisibility(View.VISIBLE);
                    }
                });
                holder.ytplayer.initialize(video_id.get(position), params, new YoutubePlayerView.YouTubeListener() {

                    @Override
                    public void onReady() {
                        holder.flag_x = 1;
                        if(holder.flag_x == 1 && holder.flag_y == 1){
                            holder.ytplayer.play();
                        }

                        JLog.i("onReady()");
                    }

                    @Override
                    public void onStateChange(YoutubePlayerView.STATE state) {
                        /**
                         * YoutubePlayerView.STATE
                         *
                         * UNSTARTED, ENDED, PLAYING, PAUSED, BUFFERING, CUED, NONE
                         *
                         */
                        if(state == YoutubePlayerView.STATE.ENDED){
                            holder.yt_video_thumb.setVisibility(View.VISIBLE);                       }
                        if(state == YoutubePlayerView.STATE.BUFFERING){
                            if(holder.flag_x == 1 && holder.flag_y == 1){
                                holder.ytplayer.play();
                            }
                            holder.ytplayer.play();

                        }

                        if(state == YoutubePlayerView.STATE.PLAYING){
                            holder.yt_progress.setVisibility(View.GONE);
                            holder.flag_y = 0;
                            holder.flag_x = 0;
                            Log.d("ValueCHECK", holder.flag_y+" "+ holder.flag_x);
                        }
                        if(state == YoutubePlayerView.STATE.PAUSED){
                            holder.yt_video_thumb.setVisibility(View.VISIBLE);

                        }

                        JLog.i("onStateChange(" + state + ")");
                    }

                    @Override
                    public void onPlaybackQualityChange(String arg) {
                        JLog.i("onPlaybackQualityChange(" + arg + ")");
                    }

                    @Override
                    public void onPlaybackRateChange(String arg) {
                        JLog.i("onPlaybackRateChange(" + arg + ")");
                    }

                    @Override
                    public void onError(String arg) {
                        holder.yt_video_thumb.setVisibility(View.VISIBLE);
                        JLog.e("onError(" + arg + ")");
                    }

                    @Override
                    public void onApiChange(String arg) {
                        JLog.i("onApiChange(" + arg + ")");
                    }

                    @Override
                    public void onCurrentSecond(double second) {

                    }


                    @Override
                    public void onDuration(double duration) {
                        // total duration
                        JLog.i("onDuration(" + duration + ")");
                    }

                    @Override
                    public void logs(String log) {
                        // javascript debug log. you don't need to use it.
                        JLog.d(log);
                    }
                });
}

But what is happening when I'm clicking on any of the video first time the progress bar appears and works fine but for the next video when i click progress bar won't appears. I'm not getting why? I want Progress bar visible for all positions in card view when i click on video Thumbnail. Can anyone help me? Any help will be appreciated Thank You!!!

Upvotes: 3

Views: 1181

Answers (1)

P. Jaiswal
P. Jaiswal

Reputation: 205

Finally, got the solution just instead of setting visibility of progressBar GONE set the Visibility INVISIBLE and Initially set the visibility of progressBar INVISIBLE. Hope it will help. Thank You

Upvotes: 1

Related Questions