예제 #1
0
        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;
                }
            }
        }
예제 #2
0
 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();
     }
 }