さて、私はサウンド付きの ListView を持っています。それらの 1 つをクリックすると、その曲の再生が開始されますが、他の 1 つまたは 1 つをクリックすると、まだ再生されます。私がやりたいのは、もう一方を押したときにその音を止めることです。私はそれをグーグルで検索し、ここで解決策とまったく同じ質問を見つけましたが、それは私にとってはうまくいきません. 「タイプ 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;
}
});
}