我想通过单击“项目”视图来播放音频文件(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并尝试相同的方法。