Visto que en Stack Overflow no me han sabido responder la duda os pregunto la duda a vosotros (copio el post tal cual de allí):
Veréis, tengo una lista de libros que estoy mostrando en un ListView, y me gustaría que al pulsar cada elemento del ListView reproduzca un sonido, en principio me conformaría con un sonido único, aunque me gustaría saber como poder reproducir un sonido por cada elemento, es decir, yo tengo la lista con diferentes libros de Harry Potter (en este caso) y me gustaría que al pulsar cada portada del libro o cada elemento se reproduzca un sonido diferente, lo he intentado con un setOnClickListener pero nada, ni tampoco con un setOnItemClickListener, no reproduce nada, y he comprobado que no fuera por el sonido de mi móvil o el propio archivo, a ver si me podeis ayudar, os dejo el código:
El Activity:
package com.eoi.aplicationmenu.books; import android.media.MediaPlayer; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import com.eoi.aplicationmenu.R; import com.eoi.aplicationmenu.films.FilmActivity; import com.eoi.aplicationmenu.films.Movie; import com.eoi.aplicationmenu.films.MovieAdapter; import java.util.ArrayList; public class BooksActivity extends AppCompatActivity { ListView lvBooks; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_books); lvBooks = findViewById(R.id.lvBooks); Books book1 = new Books(); book1.setTitle("Harry Potter y la Piedra Filosofal"); book1.setAutor("J.K. Rowling"); book1.setUrl("https://m.media-amazon.com/images/S/aplus-media/sota/f1abc087-9d36-4c74-9f63-eae7cbd1dc8c.jpg"); Books book2 = new Books(); book2.setTitle("Harry Potter y la Cámara Secreta"); book2.setAutor("J.K. Rowling"); book2.setUrl("https://images-na.ssl-images-amazon.com/images/I/91%2BBwNDpbSL.jpg"); Books book3 = new Books(); book3.setTitle("Harry Potter y el Prisionero de Azkaban"); book3.setAutor("J.K. Rowling"); book3.setUrl("https://images-na.ssl-images-amazon.com/images/I/910GP4qni2L.jpg"); Books book4 = new Books(); book4.setTitle("Harry Potter y el Caliz de Fuego"); book4.setAutor("J.K. Rowling"); book4.setUrl("https://images-na.ssl-images-amazon.com/images/I/51-bCW%2B8%2BvL._SX316_BO1,204,203,200_.jpg"); Books book5 = new Books(); book5.setTitle("Harry Potter y la Orden del Fenix"); book5.setAutor("J.K. Rowling"); book5.setUrl("https://imagessl2.casadellibro.com/a/l/t5/22/9788478887422.jpg"); Books book6 = new Books(); book6.setTitle("Harry Potter y el Misterio del Principe"); book6.setAutor("J.K. Rowling"); book6.setUrl("https://images-na.ssl-images-amazon.com/images/I/51BsPIGtJHL._SX301_BO1,204,203,200_.jpg"); Books book7 = new Books(); book7.setTitle("Harry Potter y las Reliquias de la Muerte"); book7.setAutor("J.K. Rowling"); book7.setUrl("https://images-na.ssl-images-amazon.com/images/I/91Uo5gyDkIL.jpg"); ArrayList<Books> books = new ArrayList<>(); books.add(book1); books.add(book2); books.add(book3); books.add(book4); books.add(book5); books.add(book6); books.add(book7); BookAdapter adapter = new BookAdapter(BooksActivity.this, books); lvBooks.setAdapter(adapter); } }
El Adapter:
package com.eoi.aplicationmenu.books; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.eoi.aplicationmenu.R; import com.eoi.aplicationmenu.films.Movie; import java.util.ArrayList; public class BookAdapter extends ArrayAdapter<Books> { ArrayList<Books> books; public BookAdapter(Context context, ArrayList<Books> books) { super(context, R.layout.item_books, books); this.books = books; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = LayoutInflater.from(getContext()); //Rellenar View item = inflater.inflate(R.layout.item_books, null); ImageView ivPortada = item.findViewById(R.id.ivPortada); TextView tvTitulo = item.findViewById(R.id.tvTitulo); TextView tvAutor = item.findViewById(R.id.tvAutor); Books movie = books.get(position); tvTitulo.setText(movie.getTitle()); tvAutor.setText(movie.getAutor()); String urlPortada = movie.getUrl(); Glide.with(getContext()).load(urlPortada).into(ivPortada); return item; } }
El XML:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/ivPortada" android:layout_width="100dp" android:layout_height="150dp" /> <TextView android:id="@+id/tvTitulo" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:layout_toRightOf="@+id/ivPortada" android:text="Este es el título del libro" android:textSize="12sp" android:textStyle="bold" /> <TextView android:id="@+id/tvAutor" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/tvTitulo" android:layout_margin="8dp" android:layout_toRightOf="@+id/ivPortada" android:text="Este es el autor del libro" android:textSize="10sp" /> </RelativeLayout>
No se si necesitáis algún dato más, pero piedad conmigo que soy nuevo en esto de la programación en Android, Java y la programación en general y me voy enterando como buenamente puedo.