Ich baue App mit Bildern von Tieren, und nachdem Sie auf Tier klicken, seinen Sound für das Tier zu spielen.Android, wie für jedes Element in Recyclerview verschiedenen Sound zu spielen
Ich benutze Recyclerview für die Anzeige aller Tiere.
Mein Problem ist, dass ich nicht weiß, wie Click-Ereignis für das Abspielen von Sounds für jedes Tier zu behandeln. Ich weiß, wie man den gleichen Sound für jeden Gegenstand in Recyclerview spielt, aber ich weiß nicht, wie man mit spezifischem Sound für jeden Gegenstand umgeht.
das ist Code für meine Klasse wo ich handle Daten, wo ich alle Tiernamen, Bilder und Sounds für jedes Objekt.
package com.example.android.animalsoundsforchildren;
import java.util.ArrayList;
public class Zivotinje {
private String mAnimal_name;
private int mAnimal_slika;
private int mSound;
public Zivotinje(String animalName, int slika, int sound) {
this.setmAnimal_name(animalName);
this.setmAnimal_slika(slika);
this.setmSound(sound);
}
public String getmAnimal_name() {
return mAnimal_name;
}
public void setmAnimal_name(String mAnimal_name) {
this.mAnimal_name = mAnimal_name;
}
public int getmAnimal_slika() {
return mAnimal_slika;
}
public void setmAnimal_slika(int mAnimal_slika) {
this.mAnimal_slika = mAnimal_slika;
}
public int getmSound() {
return mSound;
}
public void setmSound(int mSound) {
this.mSound = mSound;
}
//putting data
public static ArrayList<Zivotinje> createZivotinjeList() {
ArrayList<Zivotinje> animals = new ArrayList<Zivotinje>();
animals.add(new Zivotinje("Sheep", R.drawable.domestic_sheep, R.raw.gun));
animals.add(new Zivotinje("Sparrow", R.drawable.birds_sparrow, R.raw.birds_sparrow));
animals.add(new Zivotinje("Dolphin", R.drawable.sea_dolphin, R.raw.dolphin));
animals.add(new Zivotinje("Bumblebee", R.drawable.insects_bumblebee, R.raw.bumblebee));
animals.add(new Zivotinje("Tractor", R.drawable.cars_tractor, R.raw.tractor));
animals.add(new Zivotinje("Baby Cry", R.drawable.laugh_baby_cry, R.raw.baby_cray));
animals.add(new Zivotinje("Wind", R.drawable.nature_wind, R.raw.wind));
animals.add(new Zivotinje("Golf", R.drawable.effects_golf, R.raw.golf));
animals.add(new Zivotinje("Clock", R.drawable.others_clock, R.raw.clock));
return animals;
}
}
Dies ist Code für Adapter, und hier Griff i klicken und wenn ich auf Element klicken, den gleichen Ton spielen, aber wie verschiedenen Sound für jedes Tier zu spielen, nicht der gleiche Ton wie hier. Hier spiele ich immer Sound R.raw.clock
package com.example.android.animalsoundsforchildren;
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 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());
ImageView slika_source = viewHolder.imageView;
slika_source.setImageResource(zivotinjeIme.getmAnimal_slika());
}
@Override
public int getItemCount() {
return mZivotinje.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public ImageView imageView;
public TextView nameTextView;
public ViewHolder(final View itemView) {
super(itemView);
nameTextView = (TextView) itemView.findViewById(R.id.zivotinjaIme_id);
imageView = (ImageView) itemView.findViewById(R.id.slika_id);
//It works when i play for each item sound but how to play specific sound for each animal
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MediaPlayer mediaPlayer = MediaPlayer.create(v.getContext(), R.raw.clock);
mediaPlayer.start();
}
});
}
}
private List<Zivotinje> mZivotinje;
public ZivotinjeAdapter(List<Zivotinje> animals) {
mZivotinje = animals;
}
}
Möchten Sie nur Bild klickbar oder das Listenelement anklickbar sein? –
Es ist bereits Listenelement anklickbar, aber auf diese Weise spielt es nur den gleichen Sound. Ich weiß nicht, wie ich es erreichen soll, wenn ich auf ein bestimmtes Element klicke, um den Sound für dieses Listenelement abzuspielen. – beginner