Как воспроизвести песню при нажатии на элемент в recyclerView (без кнопок)?

Я создаю музыкальное приложение и перечислил свои песни в RecyclerView. Я хочу, чтобы когда я нажимал любую песню (внутри красной отмеченной области), песня должна воспроизводиться, как в современных музыкальных проигрывателях. Мне не нужны кнопки воспроизведения, остановки на моем RecyclerView. Любая помощь будет оценена по достоинству! Заранее спасибо!

YO

Songs.java

public class Songs extends Fragment  {


private static final String TAG = "Songs";
RecyclerView recyclerView;
private ArrayList<SongInfoModel> SongList = new ArrayList<SongInfoModel>();
SongAdapter songAdapter;
SongInfoModel s;
private MediaPlayer mediaPlayer;
ScaleInAnimationAdapter alphaAdapter;




@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.songs_activity, container, false);
    recyclerView = (RecyclerView)view.findViewById(R.id.recyclerView);
    mediaPlayer = new MediaPlayer();

   LinearLayoutManager linearLayoutManager = new 
   LinearLayoutManager(getContext());
   recyclerView.setLayoutManager(linearLayoutManager);

   SongInfoModel s= new SongInfoModel("Cheap Thrills","Sia",null, null, 
   "http://mp3fb.com/wp-includes/inc/down.php?
    id=hyCQomZzosfGBvVON0tRV7xfiL2GdtKXbTsBrZh_3NM&t=Sia%2B-
    %2BCheap%2BThrils%2B%D0%A0%D0%B5%D0%BC%D0%B8%D0%BA%D1%81.mp3
    &hash=true",null,null);
    SongList.add(s);
    songAdapter = new SongAdapter(getContext(),SongList);
   alphaAdapter = new ScaleInAnimationAdapter(songAdapter);
   alphaAdapter.setDuration(1000);
   alphaAdapter.setInterpolator(new OvershootInterpolator());
   alphaAdapter.setFirstOnly(false);
   recyclerView.setAdapter(alphaAdapter);

   Collections.sort(SongList, new Comparator<SongInfoModel>(){
       public int compare(SongInfoModel a, SongInfoModel b){
           return a.getSongName().compareTo(b.getSongName());
       }
   });


   return view;
}

SongAdapter.java:

  public class SongAdapter extends 
                                RecyclerView.Adapter<SongAdapter.SongHolder> 
 {

ArrayList<SongInfoModel> SongList = new ArrayList<>();
Context context;
MediaPlayer mediaPlayer;
SongInfoModel obj;



public SongAdapter(Context context, ArrayList<SongInfoModel> SongList) {

    this.context = context;
    this.SongList = SongList;

}


@Override
public SongAdapter.SongHolder onCreateViewHolder(ViewGroup parent, int 
                                                               viewType) 
   {
    View view = LayoutInflater.from(context).inflate(R.layout.row_song, 
                                                         parent, false);
    return new SongHolder(view);
}

   @Override
  public void onBindViewHolder(final SongAdapter.SongHolder holder, final 
  int 
   position) {

    final SongInfoModel songInfoModel = SongList.get(position);
    holder.songName.setText(songInfoModel.SongName);
    holder.artistName.setText(songInfoModel.ArtistName);

}

@Override
public int getItemCount() {
    return SongList.size();
}

public class SongHolder extends RecyclerView.ViewHolder  {
    TextView songName;
    TextView artistName;
    TextView duration;


    public SongHolder(View itemView)    {

        super(itemView);
        songName = (TextView)itemView.findViewById(R.id.SongName);
        artistName= (TextView)itemView.findViewById(R.id.ArtistName);
        duration = itemView.findViewById(R.id.duration);

    }

 }

}

person Sebin Paul    schedule 30.09.2017    source источник


Ответы (1)


Сначала создайте интерфейс в классе адаптера следующим образом:

private CustomOnClickListener customOnClickListener;

public interface CustomOnClickListener{
    void onClick(int position);
}

После этого реализуйте View.OnClickListener в классе держателя представления

    class TracksViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{


    public TracksViewHolder(View itemView) {
        super(itemView);

        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

        customOnClickListener.onClick(getAdapterPosition());

    }

После этого внедрите CustomOnClickListener в свой класс Fragment или Activity.

person Smarpit    schedule 08.06.2018