Example #1
0
        public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position)
        {
            if (position == 0 && ((UseChannel && channels == null) || (!UseChannel && playlists == null)))
            {
                EmptyHolder holder = (EmptyHolder)viewHolder;
                holder.text.Text = MainActivity.instance.GetString(Resource.String.long_loading);
                holder.text.SetHeight(MainActivity.instance.DpToPx(157));
            }
            else
            {
                SongHolder holder = (SongHolder)viewHolder;

                if (UseChannel)
                {
                    holder.Title.Text = channels[position].Name;
                    Picasso.With(Application.Context).Load(channels[position].ImageURL).Placeholder(Resource.Color.background_material_dark).Transform(new CircleTransformation()).Into(holder.AlbumArt);
                    holder.ItemView.SetPadding(4, 1, 4, 1);
                }
                else
                {
                    holder.Title.Text = playlists[position].Name;
                    Picasso.With(Application.Context).Load(playlists[position].ImageURL).Placeholder(Resource.Color.background_material_dark).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt);
                    if (!holder.RightButtons.FindViewById <ImageButton>(Resource.Id.play).HasOnClickListeners)
                    {
                        holder.RightButtons.FindViewById <ImageButton>(Resource.Id.play).Click    += (sender, e) => { PlaylistManager.PlayInOrder(playlists[position]); };
                        holder.RightButtons.FindViewById <ImageButton>(Resource.Id.shuffle).Click += (sender, e) => { PlaylistManager.Shuffle(playlists[position]); };
                    }
                }
            }
        }
Example #2
0
        public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position, IList <Java.Lang.Object> payloads)
        {
            if (payloads.Count > 0)
            {
                SongHolder holder = (SongHolder)viewHolder;

                if (payloads[0].ToString() == holder.Title.Text)
                {
                    return;
                }

                if (payloads[0].ToString() != null)
                {
                    Song song = MusicPlayer.queue[position];

                    if (holder.Title.Text == "" || holder.Title.Text == null)
                    {
                        holder.Title.Text = song.Title;
                    }

                    if (song.IsYt)
                    {
                        Picasso.With(Application.Context).Load(song.Album).Placeholder(Resource.Color.background_material_dark).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt);
                    }
                    return;
                }
            }

            base.OnBindViewHolder(viewHolder, position, payloads);
        }
Example #3
0
        public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, Song item)
        {
            SongHolder holder = (SongHolder)viewHolder;

            holder.Title.Text  = item.Title;
            holder.Artist.Text = item.Artist;

            if (item.AlbumArt == -1 || item.IsYt)
            {
                var songAlbumArtUri = Android.Net.Uri.Parse(item.Album);
                Picasso.With(Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.placeholder).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt);
            }
            else
            {
                var songCover       = Android.Net.Uri.Parse("content://media/external/audio/albumart");
                var songAlbumArtUri = ContentUris.WithAppendedId(songCover, item.AlbumArt);

                Picasso.With(Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.placeholder).Resize(400, 400).CenterCrop().Into(holder.AlbumArt);
            }

            if (item.IsLiveStream)
            {
                holder.Live.Visibility = ViewStates.Visible;
            }
            else
            {
                holder.Live.Visibility = ViewStates.Gone;
            }

            if (PlaylistTracks.instance.isInEditMode)
            {
                holder.more.Visibility    = ViewStates.Gone;
                holder.reorder.Visibility = ViewStates.Visible;
            }
            else
            {
                holder.more.Visibility    = ViewStates.Visible;
                holder.reorder.Visibility = ViewStates.Gone;
            }

            if (!holder.more.HasOnClickListeners)
            {
                holder.more.Click += (sender, e) =>
                {
                    PlaylistTracks.instance.More(GetItem(holder.AdapterPosition), holder.AdapterPosition);
                };
            }

            if (!holder.reorder.HasOnClickListeners)
            {
                holder.reorder.Touch += (sender, e) =>
                {
                    PlaylistTracks.instance.itemTouchHelper.StartDrag(viewHolder);
                    MainActivity.instance.contentRefresh.Enabled = false;
                };
            }
        }
Example #4
0
        public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, Song song)
        {
            SongHolder holder = (SongHolder)viewHolder;

            holder.Title.Text  = song.Title;
            holder.Artist.Text = song.Artist;

            var songCover       = Android.Net.Uri.Parse("content://media/external/audio/albumart");
            var songAlbumArtUri = ContentUris.WithAppendedId(songCover, song.AlbumArt);

            Picasso.With(Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.placeholder).Resize(400, 400).CenterCrop().Into(holder.AlbumArt);

            if (!holder.more.HasOnClickListeners)
            {
                holder.more.Click += (sender, e) =>
                {
                    MainActivity.instance.More(GetItem(holder.AdapterPosition));
                };
            }
        }
Example #5
0
        public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position)
        {
            if (position == 0 && isEmpty)
            {
                EmptyHolder holder = (EmptyHolder)viewHolder;
                holder.text.Text = type == ListType.Queue ? MainActivity.instance.GetString(Resource.String.empty_queue) : MainActivity.instance.GetString(Resource.String.long_loading);
                holder.text.SetHeight(MainActivity.instance.DpToPx(157));
                return;
            }
            else
            {
                SongHolder holder = (SongHolder)viewHolder;

                if (type == ListType.Favs)
                {
                    position--;
                }

                if (position == -1)
                {
                    holder.Title.Text = MainActivity.instance.GetString(Resource.String.shuffle_all);
                    holder.AlbumArt.SetImageResource(Resource.Drawable.Shuffle);

                    Color      color;
                    TypedValue value = new TypedValue();
                    if (MainActivity.instance.Theme.ResolveAttribute(Android.Resource.Attribute.ColorForeground, value, true))
                    {
                        color = Color.ParseColor("#" + Integer.ToHexString(value.Data));
                    }
                    else
                    {
                        color = Color.Black;
                    }

                    holder.AlbumArt.SetColorFilter(color);
                }
                else
                {
                    holder.AlbumArt.ClearColorFilter();


                    Song song = songs.Count <= position ? null : songs[position];


                    if (song == null && type == ListType.Queue)
                    {
                        holder.Title.Text = "";
                        holder.AlbumArt.SetImageResource(Resource.Color.background_material_dark);

                        MusicPlayer.RemotePlayer.MediaQueue.GetItemAtIndex(position);
                        return;
                    }

                    holder.Title.Text = song.Title;

                    if (song.AlbumArt == -1 || song.IsYt)
                    {
                        if (song.Album != null)
                        {
                            Picasso.With(Application.Context).Load(song.Album).Placeholder(Resource.Color.background_material_dark).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt);
                        }
                        else
                        {
                            Picasso.With(Application.Context).Load(Resource.Color.background_material_dark).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt);
                        }
                    }
                    else
                    {
                        var songCover       = Uri.Parse("content://media/external/audio/albumart");
                        var songAlbumArtUri = ContentUris.WithAppendedId(songCover, song.AlbumArt);

                        Picasso.With(Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.background_material_dark).Resize(400, 400).CenterCrop().Into(holder.AlbumArt);
                    }
                }
            }
        }
Example #6
0
        public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position)
        {
            if (position == 0)
            {
                QueueHeader holder = (QueueHeader)viewHolder;
                if (!holder.Shuffle.HasOnClickListeners)
                {
                    holder.Shuffle.Click += (sender, e) =>
                    {
                        Intent intent = new Intent(MainActivity.instance, typeof(MusicPlayer));
                        intent.SetAction("RandomizeQueue");
                        MainActivity.instance.StartService(intent);
                    };
                }

                if (MusicPlayer.repeat)
                {
                    holder.Repeat.SetColorFilter(Color.Argb(255, 21, 183, 237), PorterDuff.Mode.Multiply);
                }
                else
                {
                    holder.Repeat.ClearColorFilter();
                }

                if (!holder.Repeat.HasOnClickListeners)
                {
                    holder.Repeat.Click += (sender, e) => { MusicPlayer.Repeat(); }
                }
                ;

                if (!holder.More.HasOnClickListeners)
                {
                    holder.More.Click += (sender, e) =>
                    {
                        PopupMenu menu = new PopupMenu(MainActivity.instance, holder.More);
                        menu.Inflate(Resource.Menu.queue_more);
                        menu.SetOnMenuItemClickListener(Queue.instance);
                        menu.Show();
                    };
                }
                return;
            }

            if (position + 1 == ItemCount)
            {
                QueueFooter holder = (QueueFooter)viewHolder;
                holder.SwitchButton.Checked = MusicPlayer.useAutoPlay;

                if ((MusicPlayer.CurrentID() == ItemCount - 2 || MusicPlayer.CurrentID() == ItemCount - 3) && MusicPlayer.useAutoPlay)
                {
                    holder.Autoplay.Visibility = ViewStates.Visible;

                    if (!holder.ItemView.HasOnClickListeners)
                    {
                        holder.ItemView.Click += (sender, eventArg) =>
                        {
                            Intent intent = new Intent(MainActivity.instance, typeof(MusicPlayer));
                            intent.SetAction("Next");
                            MainActivity.instance.StartService(intent);
                        }
                    }
                    ;

                    if (MusicPlayer.autoPlay.Count > 0)
                    {
                        holder.RightIcon.Visibility = ViewStates.Visible;

                        Song ap = MusicPlayer.autoPlay[0];
                        holder.NextTitle.Text = ap.Title;

                        holder.NextTitle.SetTextColor(Color.White);
                        holder.NextTitle.SetBackgroundResource(Android.Resource.Color.Transparent);
                        if (ap.IsYt)
                        {
                            Picasso.With(MainActivity.instance).Load(ap.Album).Placeholder(Resource.Drawable.noAlbum).Transform(new RemoveBlackBorder(true)).Into(holder.NextAlbum);
                        }
                        else
                        {
                            var songCover       = Android.Net.Uri.Parse("content://media/external/audio/albumart");
                            var nextAlbumArtUri = ContentUris.WithAppendedId(songCover, ap.AlbumArt);

                            Picasso.With(MainActivity.instance).Load(nextAlbumArtUri).Placeholder(Resource.Drawable.noAlbum).Resize(400, 400).CenterCrop().Into(holder.NextAlbum);
                        }
                    }
                    else
                    {
                        int    count = new Random().Next(6, 15);
                        string title = "a";
                        while (count > 0)
                        {
                            title += "a";
                            count--;
                        }

                        holder.NextTitle.Text = title;
                        holder.NextTitle.SetTextColor(Color.Transparent);
                        holder.NextTitle.SetBackgroundResource(Resource.Color.background_material_dark);
                        holder.NextAlbum.SetImageResource(Resource.Color.background_material_dark);
                        holder.RightIcon.Visibility = ViewStates.Gone;
                    }
                }
                else
                {
                    holder.Autoplay.Visibility = ViewStates.Gone;
                }

                if (!holder.SwitchButton.HasOnClickListeners)
                {
                    holder.SwitchButton.Click += (sender, e) =>
                    {
                        MusicPlayer.useAutoPlay = !MusicPlayer.useAutoPlay;
                        NotifyItemChanged(ItemCount - 1, "UseAutoplay");

                        if (MusicPlayer.useAutoPlay)
                        {
                            MusicPlayer.Repeat(false);
                            if (MusicPlayer.autoPlay?.Count == 0)
                            {
                                MusicPlayer.instance.GenerateAutoPlay(false);
                            }
                        }
                        else
                        {
                            MusicPlayer.autoPlay.Clear();
                        }
                    };
                }
            }
            else
            {
                position--;
                SongHolder holder = (SongHolder)viewHolder;

                holder.reorder.SetColorFilter(Color.White);
                holder.Title.SetTextColor(Color.White);
                holder.youtubeIcon.SetColorFilter(Color.White);
                holder.reorder.Visibility = ViewStates.Visible;
                holder.more.Visibility    = ViewStates.Gone;
                holder.RightButtons.SetBackgroundResource(Resource.Drawable.darkLinear);
                int dp = MainActivity.instance.DpToPx(5);
                ((RelativeLayout.LayoutParams)holder.RightButtons.LayoutParameters).RightMargin = dp;
                holder.TextLayout.SetPadding(dp, 0, dp, 0);
                if (position == MusicPlayer.CurrentID())
                {
                    holder.status.Visibility = ViewStates.Visible;
                    holder.status.SetTextColor(MusicPlayer.isRunning ? Color.Argb(255, 244, 81, 30) : Color.Argb(255, 66, 165, 245));

                    string          status     = MusicPlayer.isRunning ? Queue.instance.GetString(Resource.String.playing) : Queue.instance.GetString(Resource.String.paused);
                    SpannableString statusText = new SpannableString(status);
                    statusText.SetSpan(new BackgroundColorSpan(Color.ParseColor("#8C000000")), 0, status.Length, SpanTypes.InclusiveInclusive);
                    holder.status.TextFormatted = statusText;
                }
                else
                {
                    holder.status.Visibility = ViewStates.Gone;
                }


                Song song = MusicPlayer.queue.Count <= position ? null : MusicPlayer.queue[position];
                if (song == null)
                {
                    if (holder.Title.Text.Length == 0)
                    {
                        holder.Title.Text = "aizquruhgqognbq";
                    }
                    if (holder.Artist.Text.Length == 0)
                    {
                        holder.Artist.Text = "ZJKGNZgzn";
                    }

                    holder.Title.SetTextColor(Color.Transparent);
                    holder.Title.SetBackgroundResource(Resource.Color.background_material_dark);
                    holder.Artist.SetTextColor(Color.Transparent);
                    holder.Artist.SetBackgroundResource(Resource.Color.background_material_dark);
                    holder.AlbumArt.SetImageResource(Resource.Color.background_material_dark);

                    MusicPlayer.RemotePlayer.MediaQueue.GetItemAtIndex(position);
                    return;
                }
                else
                {
                    holder.Title.SetBackgroundResource(0);
                    holder.Artist.SetBackgroundResource(0);
                }

                SpannableString titleText = new SpannableString(song.Title);
                titleText.SetSpan(new BackgroundColorSpan(Color.ParseColor("#8C000000")), 0, song.Title.Length, SpanTypes.InclusiveInclusive);
                holder.Title.TextFormatted = titleText;
                holder.Title.SetMaxLines(2);

                holder.Artist.Visibility = ViewStates.Gone;

                if (song.AlbumArt == -1 || song.IsYt)
                {
                    if (song.Album != null)
                    {
                        Picasso.With(Application.Context).Load(song.Album).Placeholder(Resource.Color.background_material_dark).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt);
                    }
                    else
                    {
                        Picasso.With(Application.Context).Load(Resource.Color.background_material_dark).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt);
                    }
                }
                else
                {
                    var songCover       = Android.Net.Uri.Parse("content://media/external/audio/albumart");
                    var songAlbumArtUri = ContentUris.WithAppendedId(songCover, song.AlbumArt);

                    Picasso.With(Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.background_material_dark).Resize(400, 400).CenterCrop().Into(holder.AlbumArt);
                }

                if (song.IsLiveStream)
                {
                    holder.Live.Visibility = ViewStates.Visible;
                }
                else
                {
                    holder.Live.Visibility = ViewStates.Gone;
                }


                if (!holder.reorder.HasOnClickListeners)
                {
                    holder.reorder.Touch += (sender, e) =>
                    {
                        Queue.instance.itemTouchHelper.StartDrag(viewHolder);
                        MainActivity.instance.contentRefresh.Enabled = false;
                    };
                }

                if (song.IsParsed != true && song.IsYt)
                {
                    holder.youtubeIcon.SetImageResource(Resource.Drawable.needProcessing);
                    holder.youtubeIcon.Visibility = ViewStates.Visible;
                }
                else if (song.IsParsed == true && song.IsYt)
                {
                    holder.youtubeIcon.SetImageResource(Resource.Drawable.PublicIcon);
                    holder.youtubeIcon.Visibility = ViewStates.Visible;
                }
                else
                {
                    holder.youtubeIcon.Visibility = ViewStates.Gone;
                }
            }
        }
Example #7
0
        public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position, IList <Java.Lang.Object> payloads)
        {
            if (payloads.Count > 0)
            {
                if (payloads[0].ToString() == "Repeat")
                {
                    QueueHeader holder = (QueueHeader)viewHolder;

                    if (MusicPlayer.repeat)
                    {
                        holder.Repeat.SetColorFilter(Color.Argb(255, 21, 183, 237), PorterDuff.Mode.Multiply);
                    }
                    else
                    {
                        holder.Repeat.ClearColorFilter();
                    }
                }
                else if (payloads[0].ToString() == "UseAutoplay")
                {
                    QueueFooter holder = (QueueFooter)viewHolder;
                    holder.SwitchButton.Checked = MusicPlayer.useAutoPlay;

                    if (MusicPlayer.useAutoPlay && (MusicPlayer.CurrentID() == ItemCount - 2 || MusicPlayer.CurrentID() == ItemCount - 3))
                    {
                        holder.Autoplay.Visibility = ViewStates.Visible;

                        if (!holder.ItemView.HasOnClickListeners)
                        {
                            holder.ItemView.Click += (sender, eventArg) =>
                            {
                                Intent intent = new Intent(MainActivity.instance, typeof(MusicPlayer));
                                intent.SetAction("Next");
                                MainActivity.instance.StartService(intent);
                            }
                        }
                        ;

                        if (MusicPlayer.autoPlay.Count > 0)
                        {
                            holder.RightIcon.Visibility = ViewStates.Visible;

                            Song ap = MusicPlayer.autoPlay[0];
                            holder.NextTitle.Text = ap.Title;

                            holder.NextTitle.SetTextColor(Color.White);
                            holder.NextTitle.SetBackgroundResource(Android.Resource.Color.Transparent);
                            if (ap.IsYt)
                            {
                                Picasso.With(MainActivity.instance).Load(ap.Album).Placeholder(Resource.Drawable.noAlbum).Transform(new RemoveBlackBorder(true)).Into(holder.NextAlbum);
                            }
                            else
                            {
                                var songCover       = Android.Net.Uri.Parse("content://media/external/audio/albumart");
                                var nextAlbumArtUri = ContentUris.WithAppendedId(songCover, ap.AlbumArt);

                                Picasso.With(MainActivity.instance).Load(nextAlbumArtUri).Placeholder(Resource.Drawable.noAlbum).Resize(400, 400).CenterCrop().Into(holder.NextAlbum);
                            }
                        }
                        else
                        {
                            int    count = new Random().Next(6, 15);
                            string title = "a";
                            while (count > 0)
                            {
                                title += "a";
                                count--;
                            }

                            holder.NextTitle.Text = title;
                            holder.NextTitle.SetTextColor(Color.Transparent);
                            holder.NextTitle.SetBackgroundResource(Resource.Color.background_material_dark);
                            holder.NextAlbum.SetImageResource(Resource.Color.background_material_dark);
                            holder.RightIcon.Visibility = ViewStates.Gone;
                        }
                    }
                    else
                    {
                        holder.Autoplay.Visibility = ViewStates.Gone;
                        return;
                    }
                }
                else
                {
                    SongHolder holder = (SongHolder)viewHolder;

                    if (payloads[0].ToString() == holder.Title.Text)
                    {
                        return;
                    }

                    if (int.TryParse(payloads[0].ToString(), out int payload) && payload == Resource.Drawable.PublicIcon)
                    {
                        if (MusicPlayer.queue[position - 1].IsParsed == true)
                        {
                            holder.youtubeIcon.SetImageResource(Resource.Drawable.PublicIcon);
                        }
                        return;
                    }

                    if (payloads[0].ToString() != null)
                    {
                        Song song = MusicPlayer.queue[position - 1];

                        if (holder.Title.Text == "" || holder.Title.Text == null)
                        {
                            SpannableString titleText = new SpannableString(song.Title);
                            titleText.SetSpan(new BackgroundColorSpan(Color.ParseColor("#8C000000")), 0, song.Title.Length, SpanTypes.InclusiveInclusive);
                            holder.Title.TextFormatted = titleText;
                        }

                        if (song.IsYt)
                        {
                            var songAlbumArtUri = Android.Net.Uri.Parse(song.Album);
                            Picasso.With(Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.background_material_dark).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt);
                        }
                        return;
                    }
                }
            }

            base.OnBindViewHolder(viewHolder, position, payloads);
        }
Example #8
0
        public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position)
        {
            if (items[position].Kind == YtKind.Video)
            {
                SongHolder holder = (SongHolder)viewHolder;
                Song       song   = items[position].song;

                holder.Title.Text         = song.Title;
                holder.Artist.Text        = song.Artist;
                holder.reorder.Visibility = ViewStates.Gone;

                var songAlbumArtUri = Android.Net.Uri.Parse(song.Album);
                Picasso.With(Android.App.Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.placeholder).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt);

                holder.more.Tag = position;
                if (!holder.more.HasOnClickListeners)
                {
                    holder.more.Click += (sender, e) =>
                    {
                        int tagPosition = (int)((ImageView)sender).Tag;
                        MainActivity.instance.More(items[tagPosition].song);
                    };
                }

                if (song.IsLiveStream)
                {
                    holder.Live.Visibility = ViewStates.Visible;
                }
                else
                {
                    holder.Live.Visibility = ViewStates.Gone;
                }

                float scale = MainActivity.instance.Resources.DisplayMetrics.Density;
                if (position + 1 == items.Count)
                {
                    holder.ItemView.SetPadding((int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), listPadding);
                    LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)holder.more.LayoutParameters;
                    layoutParams.SetMargins(0, 0, 0, listPadding);
                    holder.more.LayoutParameters = layoutParams;
                }
                else
                {
                    holder.ItemView.SetPadding((int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f));
                    LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)holder.more.LayoutParameters;
                    layoutParams.SetMargins(0, 0, 0, 0);
                    holder.more.LayoutParameters = layoutParams;
                }
            }
            else if (items[position].Kind == YtKind.Playlist)
            {
                PlaylistHolder holder   = (PlaylistHolder)viewHolder;
                PlaylistItem   playlist = items[position].playlist;

                holder.Title.Text = playlist.Name;
                holder.Owner.Text = playlist.Owner;

                var songAlbumArtUri = Android.Net.Uri.Parse(playlist.ImageURL);
                Picasso.With(Android.App.Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.placeholder).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt);

                holder.more.Tag = position;
                if (!holder.more.HasOnClickListeners)
                {
                    holder.more.Click += (sender, e) =>
                    {
                        int tagPosition = (int)((ImageView)sender).Tag;
                        YoutubeSearch.instances[0].PlaylistMore(items[tagPosition].playlist);
                    };
                }
            }
            else if (items[position].Kind == YtKind.Channel)
            {
                RecyclerChannelHolder holder = (RecyclerChannelHolder)viewHolder;
                Channel channel = items[position].channel;

                holder.Title.Text = channel.Name;
                Picasso.With(Android.App.Application.Context).Load(channel.ImageURL).Transform(new CircleTransformation(false)).Into(holder.AlbumArt);

                if (!holder.action.HasOnClickListeners)
                {
                    holder.action.Click += (sender, e) =>
                    {
                        YoutubeManager.MixFromChannel(channel.YoutubeID);
                    };
                }
            }
            else if (items[position].Kind == YtKind.ChannelPreview)
            {
                ChannelPreviewHolder holder = (ChannelPreviewHolder)viewHolder;
                Channel channel             = items[position].channel;

                holder.Name.Text = channel.Name;
                Picasso.With(Android.App.Application.Context).Load(channel.ImageURL).Placeholder(Resource.Color.placeholder).Transform(new CircleTransformation(true)).Into(holder.Logo);


                DisplayMetrics displayMetrics = new DisplayMetrics();
                MainActivity.instance.WindowManager.DefaultDisplay.GetMetrics(displayMetrics);
                int wholeWidth = (displayMetrics.WidthPixels - MainActivity.instance.DpToPx(15)) / 2;
                int mixHeight  = (int)(wholeWidth * 0.5625); /// width / 16 */ 9
                holder.MixOne.LayoutParameters.Height = mixHeight;
                holder.MixOne.RequestLayout();
                holder.MixTwo.LayoutParameters.Height      = mixHeight;
                holder.ChannelLogo.LayoutParameters.Height = mixHeight * 2;

                Picasso.With(Android.App.Application.Context).Load(channel.ImageURL).Placeholder(Resource.Color.placeholder).Fit().CenterCrop().Into(holder.ChannelLogo);

                List <YtFile> files = items.FindAll(x => x.Kind == YtKind.Video && x.song.Artist == channel.Name);
                if (files.Count > 0)
                {
                    Picasso.With(Android.App.Application.Context).Load(files[0].song.Album).Placeholder(Resource.Color.placeholder).Transform(new RemoveBlackBorder()).Into(holder.MixOne);
                }
                if (files.Count > 1)
                {
                    Picasso.With(Android.App.Application.Context).Load(files[1].song.Album).Placeholder(Resource.Color.placeholder).Transform(new RemoveBlackBorder()).Into(holder.MixTwo);
                }

                if (!holder.ChannelHolder.HasOnClickListeners)
                {
                    holder.ChannelHolder.Click += (sender, e) =>
                    {
                        MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView.Focusable = false;
                        MainActivity.instance.menu.FindItem(Resource.Id.search).CollapseActionView();
                        MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView.Focusable = true;
                        MainActivity.instance.FindViewById(Resource.Id.tabs).Visibility = ViewStates.Gone;
                        MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, ChannelDetails.NewInstance(channel)).AddToBackStack("Channel Details").Commit();
                    };
                }

                if (!holder.MixHolder.HasOnClickListeners)
                {
                    holder.MixHolder.Click += (sender, e) =>
                    {
                        YoutubeManager.MixFromChannel(channel.YoutubeID);
                    };
                }
            }
        }