我有一个列表视图和MediaPlayer
,用于根据行位置(如音板)播放声音。问题是,当播放声音,并且单击另一行(列表视图中的不同位置)时,我想停止该声音并开始新声音。这是我的代码,它在同一行的播放/停止时工作正常,但在不同的行上没有。我该如何解决这个问题?
public void playSound(int pos){
if(isPlaying && mMediaPlayer.isPlaying()){
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
play.setImageDrawable(context.getResources().getDrawable(R.drawable.play));
play.invalidate();
isPlaying = false;
}
else{
mMediaPlayer = MediaPlayer.create(context, songs[pos]);
mMediaPlayer.start();
isPlaying = true;
play.setImageDrawable(context.getResources().getDrawable(R.drawable.stop));
play.invalidate();
mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
isPlaying = false;
play.setImageDrawable(context.getResources().getDrawable(R.drawable.play));
play.invalidate();
}
});
}
}
这是onClick()方法:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi = convertView;
vi.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
play = (ImageButton) v.findViewById(R.id.imagePlay);
playSound(position);
}
});