如何在ListView中刷新Youtube Player视图onItemClickListener() [英] How to refresh Youtube Player View onItemClickListener() in a ListView

查看:76
本文介绍了如何在ListView中刷新Youtube Player视图onItemClickListener()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以使用cuePlaylist()播放Youtube视频,但我也想允许用户点击任意列表项,然后我想在刚刚点击的视频用户中刷新YoutubePlayerView

I am able to play Youtube videos using cuePlaylist() but I also want to allow user to tap on any of the list item and then I want to refresh YoutubePlayerView with the video user just tapped

我正在使用cuePlaylist(),因此将上一个和下一个按钮作为Youtube播放器的默认功能

I am using cuePlaylist() so getting previous and next buttons as default functionality of Youtube player

我可以用在ListView中选择的那个刷新YoutubePlayerView吗?

So can I refresh YoutubePlayerView with the one I have selected in a ListView?

这是我完整的代码,仍然是当我点击列表项中的任何一个时,在YoutubePlayerView中没有任何更改,但是能够Log刚在ListView中单击过的视频ID ...

Here is my complete code, still when I do tap on any of the list item, not getting any change in YoutubePlayerView but able to Log video Id which I just clicked in a ListView...

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            strVideoID = flowerList.get(i).getUrl();
            Log.d("url:", strVideoID); // getting particular video id

            youTubePlayerFragment.initialize(API_KEY, new YouTubePlayer.OnInitializedListener() {

                // YouTubeプレーヤーの初期化成功
                @Override
                public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
                    if (!wasRestored) {
                        player.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
                        player.loadVideo(strVideoID);
                        player.play();
                    }
                }

                // YouTubeプレーヤーの初期化失敗
                @Override
                public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult error) {
                    // YouTube error
                    String errorMessage = error.toString();
                    Toast.makeText(MainActivity.this, errorMessage, Toast.LENGTH_LONG).show();
                    Log.d("errorMessage:", errorMessage);
                }
            });

        }
    });

    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {

        if (!b) {
            youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
            youTubePlayer.cuePlaylist(PLAYLIST_ID);
        }

    }

推荐答案

您在这里使用了错误的方法,您不必每次都在YoutubePlayerFragment上调用initialize,您只需在onCreate中进行第一个初始化就足够了方法

You are using the wrong approach here, you don't need to call initialize on YoutubePlayerFragment each time, the first initialization is enough which you done in onCreate method

YouTubePlayerFragment youTubePlayerFragment = YouTubePlayerFragment.newInstance();
    youTubePlayerFragment.initialize(API_KEY, this);

在Activity中实现的初始化侦听器中,应将YoutubePlayer的引用保留在这样的类级别属性中

In the initialization listener you implemented in Activity, You should keep the reference of YoutubePlayer in a class level attribute like this

 //your class level attribute to keep reference of player
   YouTubePlayer mYoutubePlayer;

@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {

    if (!b) {
        youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
        youTubePlayer.cuePlaylist(PLAYLIST_ID);
        //Save reference of initialized player in class level attribute
         mYoutubePlayer = youTubePlayer;
    }

}

并使用此播放器属性在onItemClick中加载视频,而不是使用新的监听器再次在YoutubePlayerFragment上调用Initialize

And use this player attribute to load videos inside onItemClick instead of calling initialize again on YoutubePlayerFragment with new listener

 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

        strVideoID = flowerList.get(i).getUrl();
        Log.d("url:", strVideoID); // getting particular video id
        if(mYoutubePlayer!=null){
        mYoutubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
        mYoutubePlayer.loadVideo(strVideoID);
        mYoutubePlayer.play();
        }

    }
});

这篇关于如何在ListView中刷新Youtube Player视图onItemClickListener()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆