Проблемы с медиаплеером в чате Recyclerview для Android

#android #android-recyclerview #android-mediaplayer

Вопрос:

Я разрабатываю приложение для чата, в котором я сталкиваюсь с проблемами при работе с медиаплеером в режиме переработчика. Потоковая передача воспроизведения и паузы отлично работает, когда есть только один элемент, но если есть несколько аудиофайлов, расположенных один под другим, если один из них находится в состоянии воспроизведения, и если пользователь нажимает другой элемент, предыдущий элемент переходит в состояние паузы, но когда я снова нажимаю на воспроизведение, верхний элемент, нижние воспроизводятся, а не текущий выбранный, и панель поиска обновляется.

Вот мой код, может ли кто-нибудь помочь мне с этим, спасибо

 iv_play2.setOnClickListener {
                if (MediaPlayerUtils.isPlaying) {
                    isPlayingAudio = true
                    MediaPlayerUtils.pauseMediaPlayer()
                    iv_play2.setImageResource(R.drawable.ic_playicon)
                } else {
                    if (isPlayingAudio) {
                        MediaPlayerUtils.playMediaPlayer()
                        iv_play2.setImageResource(R.drawable.ic_pause)
                    } else {
                        iv_play2.setImageResource(R.drawable.ic_pause)
                        try {
                            MediaPlayerUtils.startAndPlayMediaPlayer(
                                URL, seekbar,
                                object : MediaPlayerUtils.Listener {
                                    override fun onAudioComplete() {
                                        isPlayingAudio = false
                                        MediaPlayerUtils.releaseMediaPlayer()
                                        iv_play2.setImageResource(R.drawable.ic_playicon)
                                    }

                                    override fun onAudioUpdate(currentPosition: Int) {
                                    seekbar.progress = currentPosition
                                }
                            })
                    }catch (e:Exception){
                        e.printStackTrace()
                    }
                    }
                }
                seekbar.setOnSeekBarChangeListener(object :
                    SeekBar.OnSeekBarChangeListener {
                    override fun onProgressChanged(
                        seekBar: SeekBar?,
                        progress: Int,
                        fromUser: Boolean
                    ) {
                        if (fromUser) {
                            MediaPlayerUtils.applySeekBarValue(progress)
                        }
                    }

                    override fun onStartTrackingTouch(seekBar: SeekBar?) {

                    }

                    override fun onStopTrackingTouch(seekBar: SeekBar?) {

                    }

                })
            }