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]); }; } } } }
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); }
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; }; } }
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)); }; } }
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); } } } }
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; } } }
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); }
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); }; } } }