package com.simplecity.amp_library.ui.adapters; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.View; import com.annimon.stream.Stream; import com.simplecity.amp_library.model.AlbumArtist; import com.simplecity.amp_library.ui.modelviews.AlbumArtistView; import com.simplecity.amp_library.utils.SettingsManager; import com.simplecity.amp_library.utils.SortManager; import com.simplecity.amp_library.utils.StringUtils; import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView; public class AlbumArtistAdapter extends ItemAdapter implements FastScrollRecyclerView.SectionedAdapter { private AlbumArtistListener mListener; public interface AlbumArtistListener { void onItemClick(View v, int position, AlbumArtist albumArtist); void onOverflowClick(View v, int position, AlbumArtist albumArtist); void onLongClick(View v, int position, AlbumArtist albumArtist); } public void setListener(AlbumArtistListener listener) { mListener = listener; } public AlbumArtist getAlbumArtist(int position) { return ((AlbumArtistView) items.get(position)).albumArtist; } @Override protected void attachListeners(final RecyclerView.ViewHolder viewHolder) { super.attachListeners(viewHolder); if (viewHolder instanceof AlbumArtistView.ViewHolder) { viewHolder.itemView.setOnClickListener(v -> { if (mListener != null && viewHolder.getAdapterPosition() != -1) { mListener.onItemClick(v, viewHolder.getAdapterPosition(), getAlbumArtist(viewHolder.getAdapterPosition())); } }); ((AlbumArtistView.ViewHolder) viewHolder).overflowButton.setOnClickListener(v -> { if (mListener != null && viewHolder.getAdapterPosition() != -1) { mListener.onOverflowClick(v, viewHolder.getAdapterPosition(), getAlbumArtist(viewHolder.getAdapterPosition())); } }); ((AlbumArtistView.ViewHolder) viewHolder).itemView.setOnLongClickListener(v -> { if (mListener != null && viewHolder.getAdapterPosition() != -1) { mListener.onLongClick(v, viewHolder.getAdapterPosition(), getAlbumArtist(viewHolder.getAdapterPosition())); } return true; }); } } public void updateItemViewType() { int viewType = SettingsManager.getInstance().getArtistDisplayType(); Stream.of(items) .filter(item -> item instanceof AlbumArtistView) .forEach(adaptableItem -> ((AlbumArtistView) adaptableItem).setViewType(viewType)); } @NonNull @Override public String getSectionName(int position) { if (!(items.get(position) instanceof AlbumArtistView)) { return ""; } int sortOrder = SortManager.getInstance().getArtistsSortOrder(); AlbumArtist albumArtist = ((AlbumArtistView) items.get(position)).albumArtist; String string = null; switch (sortOrder) { case SortManager.ArtistSort.DEFAULT: string = StringUtils.keyFor(albumArtist.name); break; case SortManager.AlbumSort.ARTIST_NAME: string = albumArtist.name; break; } if (!TextUtils.isEmpty(string)) { string = string.substring(0, 1).toUpperCase(); } else { string = " "; } return string; } }