我想通过单击“项目”视图来播放音频文件(MP3),但是当我单击另一个以此类推时,我希望上一个文件自动停止的问题。

 public ViewHolder(View itemView) {
        super(itemView);
        itemImage =(ImageView)itemView.findViewById(R.id.item_image);
        itemTitle =(TextView)itemView.findViewById(R.id.item_title);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = getAdapterPosition();
                stopPlaying();
                mp = MediaPlayer.create(v.getContext(), sounds[position]);
                mp.start();
            }
        });
    }
 private void stopPlaying() {
    if (mp != null&&mp.isPlaying()) {
        mp.stop();
        mp.release();
       mp = null;
    }
}


播放另一音频文件时,音频文件仍在运行。

最佳答案

我怀疑您已经在ViewHolder中声明了MediaPlayer。

如果在ViewHolder中声明了MediaPlayer,它将为ViewHolder中的每个项目创建一个不同的实例,因此,在调用stopPlaying()时,它正在访问可能未在播放的新实例,因此它不会停止。

全局或在适配器中或在适配器中声明MediaPlayer-将MediaPlayer的实例传递给Viewholder并尝试相同的方法。

08-18 20:05
查看更多