0
解決策を見つけようとしましたが見つかりませんでした。Android新しい再生音がRecycleviewで再生されたときにメディアプレーヤーを停止する方法
私の問題は、私はリサイクルビューにたくさんのアイテムがあることです。各アイテムには画像があり、その画像をクリックするとその画像の音声が鳴ります。 問題は私が新しい音を開始するとき、前の音が止まらず、音が終了するまでその音が持続することです。私は15をクリックした後、20は、アプリがクラッシュします聞こえると私は、このエラーメッセージが表示されます。
E/MediaPlayerの:エラー(1、-19)
はどういうわけか、私は前の音のリリースと停止を実装する必要がとき、私新しいものをクリックしてください。私は解決策を見つけることを試みるが、私はrecycleviewのためにそれを見つけることができなかった。ここで
は私のアダプターのコードは次のとおりです。
import android.content.Context;
import android.media.MediaPlayer;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import java.util.List;
public class ZivotinjeAdapter extends RecyclerView.Adapter<ZivotinjeAdapter.ViewHolder> {
@Override
public ZivotinjeAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
// Inflate the custom layout
View contactView = inflater.inflate(R.layout.item_zivotinje, parent, false);
// Return a new holder instance
ViewHolder viewHolder = new ViewHolder(contactView);
return viewHolder;
}
@Override
public void onBindViewHolder(ZivotinjeAdapter.ViewHolder viewHolder, int position) {
Zivotinje zivotinjeIme = mZivotinje.get(position);
// Set item views based on the data model
TextView textView = viewHolder.nameTextView;
textView.setText(zivotinjeIme.getmAnimal_name());
//THIS IS WHERE I HANDALE IMAGE VIEW. Using glide for images
ImageView slika_source = viewHolder.imageView;
Glide.with(slika_source.getContext())
.load((Integer) zivotinjeIme.getmAnimal_slika())
.into(slika_source);
viewHolder.setItem(mZivotinje.get(position));
}
@Override
public int getItemCount() {
return mZivotinje.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public ImageView imageView;
public TextView nameTextView;
private Zivotinje mItem;
public void setItem(Zivotinje item) {
this.mItem = item;
}
public ViewHolder(final View itemView) {
super(itemView);
nameTextView = (TextView) itemView.findViewById(R.id.zivotinjaIme_id);
imageView = (ImageView) itemView.findViewById(R.id.slika_id);
//this is click event for each item and here i play sound
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MediaPlayer mediaPlayer = MediaPlayer.create(v.getContext(), mItem.getmSound());
mediaPlayer.start();
}
});
}
}
private List<Zivotinje> mZivotinje;
public ZivotinjeAdapter(List<Zivotinje> animals) {
mZivotinje = animals;
}
}
それは私がすることはできません、すべての赤ですがコールストップクリックからpPlayingメソッド。 – beginner
編集を試してください... – Srdan
まだメソッドstopPlayingに到達できません。 ; 場合(!MediaPlayerの= nullを&& mediaPlayer.isPlaying()){ mediaPlayer.stop():それは非静的metodのstopPlayingを()その後、ちょうどこのようなあなたのMediaPlayerを囲む静的コンテキスト – beginner