你们能帮我吗,我不知道如何将视频显示为动态源视频网址。这是我的假人
interface DummyMusicDataSource {
fun getMusicData(context: Context): List<Music>
}
class DummyMusicDataSourceImpl() : DummyMusicDataSource {
override fun getMusicData(context: Context): List<Music> {
return mutableListOf(
Music(
title = "title",
imgUrl = "https://raw.githubusercontent.com/ryhanhxx/img_asset/main/IMG_MATERI_3.jpg",
desc = context.getString(R.string.desc_materi_1),
videoUrl = "yTRdWD_ar78",
)
)
}
}
这是我的活动的 ViewHolder
private fun showMusicData(music: Music?) {
music?.apply {
binding.ivImg.load(this.imgUrl) {
crossfade(true)
}
binding.tvTitle.text = this.title
binding.tvDesc.text = this.desc
//TODO : binding id videoplayer and show as a video
}
}
private fun playVideo(){
val youTubePlayerView: YouTubePlayerView = binding.youtubePlayerView
lifecycle.addObserver(youTubePlayerView)
youTubePlayerView.addYouTubePlayerListener(object : AbstractYouTubePlayerListener() {
override fun onReady(youTubePlayer: YouTubePlayer) {
val videoId = "S0Q4gqBUs7c"
youTubePlayer.loadVideo(videoId, 0f)
}
})
这是我的 xml
<com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView
android:id="@+id/youtube_player_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:autoPlay="false"
app:videoId="GYZpknfi5YQ" />
我想将“app:videoId”设为动态
您无需在 XML 中添加
app:videoId="GYZpknfi5YQ"
。
有多种方法可以使其动态化。例如,在
onBindViewHolder()
方法中,您可以以 url 作为参数来调用 playVideo
方法。
例如:
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
music = musicList[position]
holder.binding.layoutOfTheListItem.setOnClickListener { playVideo(music.videoUrl) }
// replace layoutOfTheListItem with the button or layout you want the user to click to load the video
}
private fun playVideo(videoId: String) {
val youTubePlayerView: YouTubePlayerView = binding.youtubePlayerView
lifecycle.addObserver(youTubePlayerView)
youTubePlayerView.addYouTubePlayerListener(
object : AbstractYouTubePlayerListener() {
override fun onReady(youTubePlayer: YouTubePlayer) {
youTubePlayer.loadVideo(videoId, 0f)
}
}
)
}