Я не знаю, как показать видео как URL-адрес динамического исходного видео. Это мой манекен
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» динамическим.
Вам не нужно добавлять app:videoId = "GYZpknfi5YQ" в свой XML.
Есть несколько способов сделать его динамичным. Я предполагаю, что вы вызываете метод playVideo в методе onBindViewHolder. В этом случае в методе onBindViewHolder() вы можете вызвать метод playVideo с URL-адресом в качестве аргумента.
Например:
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)
}
}
)
}