如何在虚拟上制作动态源 YouTube 网址并显示为视频

问题描述 投票:0回答:1

你们能帮我吗,我不知道如何将视频显示为动态源视频网址。这是我的假人

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”设为动态

android kotlin youtube dummy-variable video-player
1个回答
0
投票

您无需在 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)
            }
        }
    )
}
© www.soinside.com 2019 - 2024. All rights reserved.