public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { if (items[position].contentType == SectionType.SinglePlaylist) { LineSongHolder holder = (LineSongHolder)viewHolder; items[position].recycler = holder.recycler; holder.recycler.SetLayoutManager(new LinearLayoutManager(MainActivity.instance, LinearLayoutManager.Horizontal, false)); if (items[position].SectionTitle == "Queue") { holder.title.Text = MainActivity.instance.GetString(Resource.String.queue); LineAdapter adapter = new LineAdapter(holder.recycler); Home.instance.QueueAdapter = adapter; holder.recycler.SetAdapter(adapter); holder.more.Click += (sender, e) => { MainActivity.instance.ShowPlayer(); Player.instance.ShowQueue(); }; if (MusicPlayer.CurrentID() != -1 && MusicPlayer.CurrentID() <= MusicPlayer.queue.Count) { holder.recycler.ScrollToPosition(MusicPlayer.CurrentID()); } } else if (items[position].SectionTitle == "Fav") { holder.title.Text = MainActivity.instance.GetString(Resource.String.favorite); holder.recycler.SetAdapter(new LineAdapter(true, items[position].contentValue.GetRange(0, items[position].contentValue.Count > 20 ? 20 : items[position].contentValue.Count), holder.recycler)); holder.more.Click += (sender, e) => { position = holder.AdapterPosition; MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(items[position].contentValue, items[position].SectionTitle)).AddToBackStack(null).Commit(); }; } else if (items[position].SectionTitle == null) { //The playlist is loading holder.recycler.SetAdapter(new LineAdapter(new List <Song>(), holder.recycler)); } else { holder.title.Text = items[position].SectionTitle; holder.recycler.SetAdapter(new LineAdapter(items[position].contentValue.GetRange(0, items[position].contentValue.Count > 20 ? 20 : items[position].contentValue.Count), holder.recycler)); holder.more.Click += (sender, e) => { position = holder.AdapterPosition; if (items[position].playlist == null) { MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(items[position].contentValue, items[position].SectionTitle)).AddToBackStack(null).Commit(); } else { MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(items[position].playlist)).AddToBackStack(null).Commit(); } }; } } else if (items[position].contentType == SectionType.ChannelList) { LineSongHolder holder = (LineSongHolder)viewHolder; items[position].recycler = holder.recycler; holder.title.Text = items[position].SectionTitle; holder.recycler.SetLayoutManager(new LinearLayoutManager(MainActivity.instance, LinearLayoutManager.Vertical, false)); if (items[position].channelContent != null) { holder.recycler.SetAdapter(new VerticalSectionAdapter(items[position].channelContent.GetRange(0, items[position].channelContent.Count > 4 ? 4 : items[position].channelContent.Count), holder.recycler)); if (items[position].channelContent.Count > 4) { holder.more.Visibility = ViewStates.Visible; ((GradientDrawable)holder.more.Background).SetStroke(5, Android.Content.Res.ColorStateList.ValueOf(Color.Argb(255, 21, 183, 237))); holder.more.SetTextColor(Color.Argb(255, 21, 183, 237)); holder.more.Text = ((VerticalSectionAdapter)holder.recycler.GetAdapter()).channels.Count > 4 ? MainActivity.instance.GetString(Resource.String.view_less) : MainActivity.instance.GetString(Resource.String.view_more); holder.more.Click += (sender, e) => { VerticalSectionAdapter adapter = (VerticalSectionAdapter)holder.recycler.GetAdapter(); if (adapter.ItemCount == 4) { adapter.channels.AddRange(items[position].channelContent.GetRange(4, items[position].channelContent.Count - 4)); adapter.NotifyItemRangeInserted(4, items[position].channelContent.Count - 4); holder.more.Text = MainActivity.instance.GetString(Resource.String.view_less); } else { int count = adapter.channels.Count - 4; adapter.channels.RemoveRange(4, count); adapter.NotifyItemRangeRemoved(4, count); holder.more.Text = MainActivity.instance.GetString(Resource.String.view_more); } }; } else { holder.more.Visibility = ViewStates.Gone; } } else { holder.recycler.SetAdapter(new VerticalSectionAdapter(false, holder.recycler)); } } else if (items[position].contentType == SectionType.PlaylistList) { LineSongHolder holder = (LineSongHolder)viewHolder; items[position].recycler = holder.recycler; holder.title.Text = items[position].SectionTitle; holder.recycler.SetLayoutManager(new LinearLayoutManager(MainActivity.instance, LinearLayoutManager.Vertical, false)); if (items[position].playlistContent != null) { holder.recycler.SetAdapter(new VerticalSectionAdapter(items[position].playlistContent.GetRange(0, items[position].playlistContent.Count > 4 ? 4 : items[position].playlistContent.Count), holder.recycler)); if (ChannelDetails.instance != null) { if (items[position].playlistContent.Count > 4) { holder.more.Visibility = ViewStates.Visible; ((GradientDrawable)holder.more.Background).SetStroke(5, Android.Content.Res.ColorStateList.ValueOf(Color.Argb(255, 21, 183, 237))); holder.more.SetTextColor(Color.Argb(255, 21, 183, 237)); holder.more.Text = ((VerticalSectionAdapter)holder.recycler.GetAdapter()).playlists.Count > 4 ? MainActivity.instance.GetString(Resource.String.view_less) : MainActivity.instance.GetString(Resource.String.view_more); holder.more.Click += (sender, e) => { VerticalSectionAdapter adapter = (VerticalSectionAdapter)holder.recycler.GetAdapter(); if (adapter.ItemCount == 4) { adapter.playlists.AddRange(items[position].playlistContent.GetRange(4, items[position].playlistContent.Count - 4)); adapter.NotifyItemRangeInserted(4, items[position].playlistContent.Count - 4); holder.more.Text = MainActivity.instance.GetString(Resource.String.view_less); } else { int count = adapter.playlists.Count - 4; adapter.playlists.RemoveRange(4, count); adapter.NotifyItemRangeRemoved(4, count); holder.more.Text = MainActivity.instance.GetString(Resource.String.view_more); } }; } else { holder.more.Visibility = ViewStates.Gone; } } else { holder.more.Click += (sender, e) => { MainActivity.instance.FindViewById <BottomNavigationView>(Resource.Id.bottomView).SelectedItemId = Resource.Id.playlistLayout; }; holder.more.Visibility = ViewStates.Visible; } } else { holder.recycler.SetAdapter(new VerticalSectionAdapter(true, holder.recycler)); holder.more.Visibility = ViewStates.Gone; } } }
void OnClick(int position) { if (UseChannel) { MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, ChannelDetails.NewInstance(channels[position])).AddToBackStack("Channel Details").Commit(); } else { MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(playlists[position])).AddToBackStack("Playlist Track").Commit(); } }