在 RecyclerView 中播放下一首音乐时播放图标更改前的问题
Problem With Change Before Play Icon When Playing Next Music In The RecyclerView
我是 android 开发新手。
我有两个音乐列表,我可以完全获取和播放这些音乐并将其图标从播放更改为暂停等。
但我在播放之前遇到了一个大问题。
为了解决这个问题,我搜索了过去一天和今天的所有内容,并阅读了很多代码以找到更改的最佳条件。
主要问题:
当我在 play_btn 上点击第一个时,我的音乐开始播放。没关系。
当我点击 play_btn 正在播放音乐时,它会将图标更改为暂停并且其音乐将停止;
当我点击下一个回收行时出现问题。我过去的 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));
}
}
});
}
});
我通过限制我的用户回答了这个问题:
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();
}
}
});
我是 android 开发新手。 我有两个音乐列表,我可以完全获取和播放这些音乐并将其图标从播放更改为暂停等。 但我在播放之前遇到了一个大问题。 为了解决这个问题,我搜索了过去一天和今天的所有内容,并阅读了很多代码以找到更改的最佳条件。
主要问题: 当我在 play_btn 上点击第一个时,我的音乐开始播放。没关系。 当我点击 play_btn 正在播放音乐时,它会将图标更改为暂停并且其音乐将停止; 当我点击下一个回收行时出现问题。我过去的 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));
}
}
});
}
});
我通过限制我的用户回答了这个问题:
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();
}
}
});