Проблема со значком изменения перед воспроизведением при воспроизведении следующей музыки c в RecyclerView - PullRequest
0 голосов
/ 02 мая 2020

я новичок в android разработке. У меня есть два списка музыкальных произведений, которые я могу получить и воспроизвести, поменяв иконку с воспроизведения на паузу или т. д. c но у меня есть серьезная проблема с моим предметом перед игрой. для решения этой проблемы я искал весь свой прошлый день и сегодня и читал множество кодов, чтобы найти наилучшее условие для изменения.

Основная проблема: когда я нажимаю на первую в play_btn, моя музыка c запускается играть. все нормально. когда я нажимаю на play_btn, играя musi c, он меняет значок на паузу, и его musi c останавливается; , когда я нажимаю на следующий ряд переработчика. Моя прошлая иконка btn_play не меняется.

viewHolder.btn_play.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {

    if (oldPosition == -1) {
      if (!isMediaPlayerPlaying) {
        mediaPlayer = new MediaPlayer();
        switch (listName) {
          case "sabah": {
            mediaPlayer = MediaPlayer.create(G.app, sabahMusics.get(position));
            break;
          }
          case "masae": {
            mediaPlayer = MediaPlayer.create(G.app, masaeMusics.get(position));
            break;
          }
        }
        Log.i("hdev", "boolean is: " + isMediaPlayerPlaying);
        mediaPlayer.start();
        isMediaPlayerPlaying = !isMediaPlayerPlaying;
        oldPosition = position;
      } else {
        mediaPlayer.pause();
        isMediaPlayerPlaying = !isMediaPlayerPlaying;
      }
    }
    if (oldPosition != position) {

    }

      if (mediaPlayer.isPlaying()) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
          viewHolder.btn_play.setBackground(G.app.getDrawable(R.drawable.pause));
        }
      } else {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
          viewHolder.btn_play.setBackground(G.app.getDrawable(R.drawable.play));
        }
      }

      mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mediaPlayer) {
          Log.i("hdev", "Prepaired Prepaired Prepaired");
        }
      });
      mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            viewHolder.btn_play.setBackground(G.app.getDrawable(R.drawable.play));
          }
        }
      });

  }
});

1 Ответ

0 голосов
/ 04 мая 2020

Я ответил на этот вопрос с ограничением моих пользователей:

viewHolder.btn_play.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
    takeView = view;
    if (oldPosition == -1 || oldPosition == position) {
      if (!isMediaPlayerPlaying) {
        mediaPlayer = new MediaPlayer();
        switch (listName) {
          case "sabah": {
            mediaPlayer = MediaPlayer.create(G.app, sabahMusics.get(position));
            break;
          }
          case "masae": {
            mediaPlayer = MediaPlayer.create(G.app, masaeMusics.get(position));
            break;
          }
        }
        Log.i("hdev", "boolean is: " + isMediaPlayerPlaying);
        mediaPlayer.start();
        isMediaPlayerPlaying = !isMediaPlayerPlaying;
        oldPosition = position;
      } else {
        mediaPlayer.pause();
        oldPosition = -1;
        isMediaPlayerPlaying = !isMediaPlayerPlaying;
      }
      if (mediaPlayer.isPlaying()) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
          viewHolder.btn_play.setBackground(G.app.getDrawable(R.drawable.pause));
        }
      } else {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
          viewHolder.btn_play.setBackground(G.app.getDrawable(R.drawable.play));
        }
      }
      mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mediaPlayer) {
          Log.i("hdev", "Prepaired Prepaired Prepaired");
        }
      });
      mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            viewHolder.btn_play.setBackground(G.app.getDrawable(R.drawable.play));
          }
        }
      });
    } else  {
      MediaPlayer waterMediaPlayer = new MediaPlayer();
      waterMediaPlayer = new MediaPlayer();
      waterMediaPlayer = MediaPlayer.create(G.app, R.raw.water);
      waterMediaPlayer.start();
      animateShake(viewHolder.btn_play);
      Snackbar.make(view.getRootView() ,"Something to show Err for user", 2000).show();

    }
  }
});
...