好吧,我有一个带有声音的 ListView。当我单击其中一个时,它开始播放那首歌,但是当我单击其他一个/一个时,它仍在播放。我想要做的是当我按下另一个时停止那个声音。我用谷歌搜索,在这里找到了完全相同的问题和解决方案,但它对我不起作用。我收到错误消息:“MediaPlayer 类型中的方法 setDataSource(String) 不适用于参数 (int)”。我只是不知道如何获得具体的位置,点击了哪个项目行。这就是我现在在 onListItemClick() 方法中所拥有的:
@Override
public void onListItemClick(ListView parent, View v, int position, long id) {
Minions s = (Minions) mSounds.get(position);
MediaPlayer mPlayer;
final boolean isPlaying = false;
if(!isPlaying){
mPlayer = new MediaPlayer();
mPlayer.setDataSource(s.getSoundResourceId());
mPlayer.prepare();
mPlayer.start();
isPlaying = true;
}else{
isPlaying = false;
mPlayer.stop();
mPlayer.reset();
mPlayer.setDataSource(s.getSoundResourceId());
mPlayer.prepare();
mPlayer.start();
isPlaying = true;
}
mPlayer.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mPlayer) {
mPlayer.release();
isPlaying = false;
}
});
}