Как использовать MediaPlayer в RecyclerViewAdapter в Котлине? - PullRequest
0 голосов
/ 29 апреля 2019

Я просто хотел воспроизвести некоторый аудиофайл (например, .mp3) в своем классе Recyclerview Adapter, я реализовал его довольно легко, но я не знаю, почему он не воспроизводится, а также не отображает ошибки для трассировки, Посмотрите на код ниже, и, пожалуйста, укажите мне:

 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()
     }
   }

Ничего не воспроизводится, остальные хороши, у меня есть сырой mp3-файл в res / raw / sound_file_1.mp3, что в этом плохого?

1 Ответ

0 голосов
/ 29 апреля 2019

Согласно документации Android по реализации MediaPlayer, MediaPlayer должен быть подготовлен перед началом воспроизведения.

Для справки диаграмма состояний MediaPlayer:

enter image description here

Объект MediaPlayer должен сначала войти в состояние «Подготовлено», прежде чем можно будет начать воспроизведение.

Пожалуйста, проверьте, выполнили ли вы эти шаги.

Как мне кажется, вы можете сделать это следующим образом.

Вместо создания MediaPlayer в onBindViewHolder() из RecyclerView передать его в качестве параметра, из которого создается адаптер,это будет эффективно, потому что каждый раз, когда прокручивается список, создается объект MediaPlayer, который, я думаю, не является правильным способом вызова.Открыто для обсуждения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...