Sop*_*hie 21 youtube video android youtube-api android-listview
我可以使用Youtube视频,cuePlaylist()但我也希望允许用户点击任何列表项,然后我想刷新YoutubePlayerView视频用户只需点击
我正在使用cuePlaylist()以前的和下一个按钮作为Youtube播放器的默认功能
那么我可以YoutubePlayerView用我选择的那个刷新ListView吗?
这是我的完整代码,当我点击任何列表项时,没有得到任何更改YoutubePlayerView但能够Log视频ID我刚刚点击了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);
}
}
Run Code Online (Sandbox Code Playgroud)
你在这里使用了错误的方法,你不需要YoutubePlayerFragment每次都调用initialize ,第一次初始化就足够你在onCreate方法中完成了
YouTubePlayerFragment youTubePlayerFragment = YouTubePlayerFragment.newInstance();
youTubePlayerFragment.initialize(API_KEY, this);
Run Code Online (Sandbox Code Playgroud)
在Activity中实现的初始化侦听器中,您应该将YoutubePlayer的引用保留在类级别属性中
//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;
}
}
Run Code Online (Sandbox Code Playgroud)
并使用此播放器属性在onItemClick中加载视频,而不是使用新的侦听器在YoutubePlayerFragment上再次调用initialize
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();
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3179 次 |
| 最近记录: |