我的listview按钮有问题 . 如果我点击播放正确的歌曲正在播放的btn和btn更新暂停,反之亦然 . 但是如果我在播放歌曲时从listview点击其他播放按钮它只是暂停了最后一个歌曲 . 我用mediaPlayer.stop()和release()更新了我的代码,但是现在当我在其他播放时点击了一个btn它停止了歌曲但它没有改变我的最后一个暂停按钮来播放,如果我点击了播放歌曲按钮暂停它崩溃 . 我知道if的位置是什么(mediaPlayer!= null)但我无法弄明白 . 这是我的代码:

public class MusicAdapter extends BaseAdapter {
private Context context;
private int layout;
private ArrayList arrayList;
private MediaPlayer mediaPlayer;
private boolean flag = true;
int currentPosition;
public MusicAdapter(Context context, int layout, ArrayList arrayList) {
this.context = context;
this.layout = layout;
this.arrayList = arrayList;
}

@Override
public int getCount() {
    return arrayList.size();
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}
private class Holder{
    TextView textName,textAlbum;
    ImageView play, stop;
}


@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    final Holder holder;
    if (convertView == null) {
        holder = new Holder();
        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = layoutInflater.inflate(layout, null);
        holder.textName = (TextView) convertView.findViewById(R.id.textName);
        holder.textAlbum = (TextView) convertView.findViewById(R.id.textAlbum);
        holder.play = convertView.findViewById(R.id.play);
        holder.stop = convertView.findViewById(R.id.stop);

        convertView.setTag(holder);
    } else {
        holder = (Holder) convertView.getTag();

    }
    final Music music = (Music) arrayList.get(position);
    holder.textName.setText(music.getName());
    holder.textAlbum.setText(music.getAlbum());


    holder.play.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mediaPlayer != null) {
                mediaPlayer.stop();
                mediaPlayer.reset();
                mediaPlayer.release();
            }
            mediaPlayer = MediaPlayer.create(context, music.getSong());




                flag = false;


            if (mediaPlayer.isPlaying()) {
                mediaPlayer.pause();
                holder.play.setImageResource(R.drawable.ic_play);

            } else {
                mediaPlayer.start();
                holder.play.setImageResource(R.drawable.pause);
            }

        }
    });

    holder.stop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (!flag) {
                mediaPlayer.stop();
                mediaPlayer.release();
                flag = true;
            }
            holder.play.setImageResource(R.drawable.ic_play);
        }
    });
    return convertView;

}

}