如何在Kotlin的RecyclerViewAdapter中使用MediaPlayer?

时间:2019-04-29 05:39:04

标签: android kotlin

我只是想在Recyclerview Adapter类中播放一些音频文件(例如,.mp3),我很容易实现了它,但是我不知道为什么它不播放以及没有显示任何跟踪错误,请看下面的代码,并指导我:

 override fun onBindViewHolder(holder: PriceAdapter.PriceHolder, pos: Int) {
    holder.qt!!.text = questionsList[pos].priceText

    holder.qt!!.setOnClickListener(View.OnClickListener {
        if (questionsList[pos].price == questionsList[pos].priceNow) {

      //This is where I wanted to implement my mediaplayer:

     var mediaPlayer: MediaPlayer? =MediaPlayer.create(it.context,R.raw.sound_file_1)
     mediaPlayer?.start()
     }
   }

它没有播放任何东西,其他都很好,我在res / raw / sound_file_1.mp3中有原始的mp3文件,这可能是什么问题?

1 个答案:

答案 0 :(得分:0)

根据有关MediaPlayer实现的Android文档,MediaPlayer应该在开始播放之前进行准备。

  

有关MediaPlayer状态图的参考:

enter image description here

  

MediaPlayer对象必须首先进入“准备”状态,然后才能   可以开始播放。

请检查您是否已执行这些步骤。

我认为您可以做到。

与其在MediaPlayer的{​​{1}}中创建onBindViewHolder(),而不是在创建适配器的位置将其作为参数传递,这将是有效的,因为每次滚动列表时都会使用MediaPlayer对象将被创建,我认为这不是正确的调用方式。公开讨论。