package com.simplecity.amp_library.ui.adapters; import android.support.v4.view.MotionEventCompat; import android.support.v7.widget.RecyclerView; import android.view.MotionEvent; import android.view.View; import com.simplecity.amp_library.model.Song; import com.simplecity.amp_library.ui.modelviews.SongView; public class DetailAdapter extends ItemAdapter { private Listener mListener; public interface Listener { void onItemClick(View v, int position, Song song); void onOverflowClick(View v, int position, Song song); void onLongClick(View v, int position, Song song); void onStartDrag(RecyclerView.ViewHolder viewHolder); } public void setListener(Listener listener) { mListener = listener; } public Song getSong(int position) { return ((SongView) items.get(position)).song; } @Override protected void attachListeners(final RecyclerView.ViewHolder viewHolder) { super.attachListeners(viewHolder); if (viewHolder instanceof SongView.ViewHolder) { viewHolder.itemView.setOnClickListener(v -> { if (mListener != null && viewHolder.getAdapterPosition() != -1) { mListener.onItemClick(v, viewHolder.getAdapterPosition(), getSong(viewHolder.getAdapterPosition())); } }); ((SongView.ViewHolder) viewHolder).overflowButton.setOnClickListener(v -> { if (mListener != null && viewHolder.getAdapterPosition() != -1) { mListener.onOverflowClick(v, viewHolder.getAdapterPosition(), getSong(viewHolder.getAdapterPosition())); } }); ((SongView.ViewHolder) viewHolder).itemView.setOnLongClickListener(v -> { if (mListener != null && viewHolder.getAdapterPosition() != -1) { mListener.onLongClick(v, viewHolder.getAdapterPosition(), getSong(viewHolder.getAdapterPosition())); } return true; }); if (((SongView.ViewHolder) viewHolder).dragHandle != null) { ((SongView.ViewHolder) viewHolder).dragHandle.setOnTouchListener((v, event) -> { if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN) { mListener.onStartDrag(viewHolder); } return false; }); } } } }