Приложение вылетает при воспроизведении звука во втором адаптере просмотра списка

Мой класс состоит из списка, который содержит список треков. Каждый элемент списка состоит из кнопок Play и Pause. Он должен воспроизводить трек при нажатии play и останавливать трек при нажатии pause. Я не использую разные кнопки .... Я использую одну кнопку только который изменяет свой текст при нажатии ч / б воспроизведения и паузы и функции соответственно. У меня возникают следующие проблемы: щелчок по воспроизведению воспроизводит трек, но когда я останавливаю трек, нажимая паузу, а затем пытаюсь воспроизвести любой трек, приложение вылетает и показывает следующие ошибки, показывающие исключение нелегального состояния

ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: главная

java.lang.IllegalStateException
        at android.media.MediaPlayer._setDataSource(Native Method)
        at android.media.MediaPlayer.setDataSource(MediaPlayer.java:966)
        at android.media.MediaPlayer.setDataSource(MediaPlayer.java:926)
        at xyz.SoundCloudAdapter$1.onClick(SoundCloudAdapter.java:86)
        at android.view.View.performClick(View.java:4091)
        at android.view.View$PerformClick.run(View.java:17072)
        at android.os.Handler.handleCallback(Handler.java:615)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:153)
        at android.app.ActivityThread.main(ActivityThread.java:5086)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
        at dalvik.system.NativeStart.main(Native Method)

Открытый класс SoundClassAdapter Открытый SoundCloudAdapter расширяет ArrayAdapter MediaPlayer.OnPreparedListener {ArrayList soundcloudList; LayoutInflater vi; int Resource;

    public static MediaPlayer mMediaPlayer;
    public SoundCloudAdapter(Context context, int resource, ArrayList<SoundCloud> objects)
    {
        super(context, resource, objects);
        vi = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        Resource = resource;
        soundcloudList = objects;
        mMediaPlayer = new MediaPlayer();
        mMediaPlayer.setOnPreparedListener(this);
    }


    @Override
    public View getView(final int position, View convertView, ViewGroup parent)
    {
        final ViewHolder holder;

        // convert view = design

        View v = convertView;
        if (v == null)
        {
            holder = new ViewHolder();
            v = vi.inflate(Resource, null);

            holder.textview = (TextView) v.findViewById(R.id.name);
            holder.btn = (Button) v.findViewById(R.id.button);
            holder.btn2 = (Button) v.findViewById(R.id.button2);
       holder.textview2 = (TextView) v.findViewById(R.id.email);
            v.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) v.getTag();
        }
        holder.textview.setText(soundcloudList.get(position).getTitle());
        holder.textview2.setText(soundcloudList.get(position).getId());

        holder.btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                notifyDataSetChanged();

                if (holder.btn.getText().toString().equalsIgnoreCase("Play"))
                {
                holder.btn.setText("Pause");


                    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    try
                    {
                        mMediaPlayer.setDataSource("http://api.soundcloud.com/tracks/"+soundcloudList.get(position).getId()+"/stream?client_id=xyz");
                        mMediaPlayer.prepareAsync();
                    }
                    catch (IllegalArgumentException e)
                    {
                        e.printStackTrace();

                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();

                    }
                    notifyDataSetChanged();
                }
                else if (holder.btn.getText().toString().equalsIgnoreCase("Pause"))
                {
                    holder.btn.setText("Play");
                    if(mMediaPlayer.isPlaying()) {
                        mMediaPlayer.stop();

                    }
                    mMediaPlayer.release();
                    notifyDataSetChanged();
                }






            }
        });

        return v;

    }

    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.start();
    }

    static class ViewHolder
    {

        public TextView textview;
        public Button btn;
        public Button btn2;
        public TextView textview2;


    }


}

если я объявлю

mMediaPlayer = new MediaPlayer();
            mMediaPlayer.setOnPreparedListener(this); inside onClick() 

трек не останавливается

Ответы на вопрос(2)

Ваш ответ на вопрос