Ich versuche, eine Lösung zu finden, konnte es aber nicht finden.Android wie Mediaplayer zu stoppen, wenn neuer Ton in recycleview starten
Mein Problem ist, dass ich viele Elemente im Recycleview habe. Jedes Element hat ein Bild und wenn ich auf dieses Bild klicke, wird der Sound für dieses Bild gestartet. Problem ist, wenn ich einen neuen Sound starte vorherigen Sound nicht aufhören, es spielt weiter, bis Sound Finish. Nachdem ich 15 klicken, Sounds 20 App abgestürzt bekommen, und ich erhalten diese Fehlermeldung:
E/Mediaplayer: Fehler (1, -19)
Irgendwie muss ich Freigabe- und Stopp des vorhergehenden Tons implementieren, wenn i klicke auf den Neuen. Ich versuche, eine Lösung zu finden, aber ich konnte sie nicht für die Recyclingansicht finden.
Hier ist mein Adapter Code:
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;
}
}
ist alles rot, kann ich nicht ruf sto an pPlaying-Methode von Klick. – beginner
versuchen Sie die Bearbeitung ... – Srdan
Ich kann immer noch nicht Methode stopPlaying erreichen. Er schreibt nicht statisch metod stopPlaying() kann nicht von einem statischen Kontext verweist – beginner