package com.sdsmdg.harjot.MusicDNA.fragments.ViewPlaylistFragment; import android.content.Context; import android.graphics.Color; import android.os.AsyncTask; import android.os.Build; import android.support.v4.view.MotionEventCompat; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.sdsmdg.harjot.MusicDNA.itemtouchhelpers.ItemTouchHelperAdapter; import com.sdsmdg.harjot.MusicDNA.itemtouchhelpers.ItemTouchHelperViewHolder; import com.sdsmdg.harjot.MusicDNA.activities.HomeActivity; import com.sdsmdg.harjot.MusicDNA.models.LocalTrack; import com.sdsmdg.harjot.MusicDNA.models.Track; import com.sdsmdg.harjot.MusicDNA.models.UnifiedTrack; import com.sdsmdg.harjot.MusicDNA.R; import com.sdsmdg.harjot.MusicDNA.imageloader.ImageLoader; import com.squareup.picasso.Picasso; import java.util.List; /** * Created by Harjot on 20-May-16. */ public class PlaylistTrackAdapter extends RecyclerView.Adapter<PlaylistTrackAdapter.MyViewHolder> implements ItemTouchHelperAdapter { private List<UnifiedTrack> songList; private Context ctx; ImageLoader imgLoader; HomeActivity homeActivity; public interface OnDragStartListener { void onDragStarted(RecyclerView.ViewHolder viewHolder); } public interface OnMoveRemoveListener { void updateViewPlaylistFragment(); } public interface onPlaylistEmptyListener { void onPlaylistEmpty(); } private final OnDragStartListener mDragStartListener; public onPlaylistEmptyListener mCallback; public OnMoveRemoveListener mCallback2; public PlaylistTrackAdapter(List<UnifiedTrack> songList, ViewPlaylistFragment fragContext, Context ctx) { this.songList = songList; mDragStartListener = fragContext; mCallback2 = fragContext; mCallback = (onPlaylistEmptyListener) ctx; this.ctx = ctx; homeActivity = (HomeActivity) ctx; imgLoader = new ImageLoader(ctx); } @Override public void onItemMove(int fromPosition, int toPosition) { UnifiedTrack prev = songList.remove(fromPosition); songList.add(toPosition, prev); notifyItemMoved(fromPosition, toPosition); if (homeActivity.pAdapter != null) homeActivity.pAdapter.notifyDataSetChanged(); homeActivity.updateAllPlaylistFragment(); mCallback2.updateViewPlaylistFragment(); new HomeActivity.SavePlaylists().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } @Override public void onItemDismiss(int position) { songList.remove(position); notifyItemRemoved(position); if (songList.size() == 0) { ((HomeActivity) ctx).onBackPressed(); homeActivity.allPlaylists.getPlaylists().remove(homeActivity.tempPlaylistNumber); mCallback.onPlaylistEmpty(); } else if (homeActivity.pAdapter != null) { homeActivity.pAdapter.notifyDataSetChanged(); mCallback2.updateViewPlaylistFragment(); } homeActivity.updateAllPlaylistFragment(); new HomeActivity.SavePlaylists().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } public class MyViewHolder extends RecyclerView.ViewHolder implements ItemTouchHelperViewHolder { ImageView art; TextView title, artist; View indicator; ImageView holderImg; public MyViewHolder(View view) { super(view); art = (ImageView) view.findViewById(R.id.img); title = (TextView) view.findViewById(R.id.title); artist = (TextView) view.findViewById(R.id.url); indicator = view.findViewById(R.id.currently_playing_indicator); holderImg = (ImageView) view.findViewById(R.id.holderImage); } @Override public void onItemSelected() { itemView.setBackgroundColor(Color.parseColor("#444444")); if (Build.VERSION.SDK_INT >= 21) { itemView.setTranslationZ(12); } } @Override public void onItemClear() { itemView.setBackgroundColor(Color.parseColor("#111111")); if (Build.VERSION.SDK_INT >= 21) { itemView.setTranslationZ(0); } } } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.list_item, parent, false); return new MyViewHolder(itemView); } @Override public void onBindViewHolder(final PlaylistTrackAdapter.MyViewHolder holder, int position) { UnifiedTrack ut = songList.get(position); if (ut.getType()) { LocalTrack lt = ut.getLocalTrack(); imgLoader.DisplayImage(lt.getPath(), holder.art); holder.title.setText(lt.getTitle()); holder.artist.setText(lt.getArtist()); } else { Track t = ut.getStreamTrack(); Picasso.with(ctx) .load(t.getArtworkURL()) .resize(100, 100) .error(R.drawable.ic_default) .placeholder(R.drawable.ic_default) .into(holder.art); holder.title.setText(t.getTitle()); holder.artist.setText(""); } holder.holderImg.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN) { mDragStartListener.onDragStarted(holder); } return false; } }); } @Override public int getItemCount() { return songList.size(); } }