【发布时间】:2021-08-12 06:34:31
【问题描述】:
我像这样在 Viewholder 上创建一个 MediaPlayer
public class ViewHolder extends RecyclerView.ViewHolder {
RoundedImageView imageView;
TextView username;
ImageButton buttonInfo;
MediaPlayer mediaPlayer;
public ViewHolder(@NonNull @NotNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.itemCardStackView);
username = itemView.findViewById(R.id.textViewUsername_stackView);
buttonInfo = itemView.findViewById(R.id.buttonToInfo_stackView);
}
void setData(Users data) {
mediaPlayer = new MediaPlayer();
if (!data.getAudioIntro().equals("")) {
try {
mediaPlayer.setDataSource(data.getAudioIntro());
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
booleanCallBack.checkAudio(true);
username.setText(data.getUsername());
Glide.with(context).load(data.getAvatar()).into(imageView);
}
});
mediaPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
}
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!data.getAudioIntro().equals("")) {
if (mediaPlayer.isPlaying())
mediaPlayer.pause();
else {
mediaPlayer.start();
}
} else {
Toast.makeText(context, "No Voice intro", Toast.LENGTH_SHORT).show();
}
}
});
}
}
但我想在 Activity 上的 CardView 刷卡时停止它。所以我创建了一个可以从活动调用的方法
public void stopMediaplayer() {
//I don't have idea to get MediaPlayer on ViewHolder
}
当我使用时,我只是在 Activity 上调用它
@Override
public void onCardSwiped(Direction direction) {
adapter.stopMediaplayer();
}
但我不知道在外面访问 MediaPlayer。谁能帮我?请!
祝大家有美好的一天!
【问题讨论】:
标签: java android android-mediaplayer