public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.Inflate(Resource.Layout.LonelyRecycler, container, false); instance = this; ListView = view.FindViewById <RecyclerView>(Resource.Id.recycler); ListView.SetLayoutManager(new LinearLayoutManager(Application.Context)); adapter = new QueueAdapter(); ListView.SetAdapter(adapter); adapter.ItemClick += ListView_ItemClick; adapter.ItemLongCLick += ListView_ItemLongCLick; ListView.SetItemAnimator(new DefaultItemAnimator()); ListView.AddItemDecoration(new CurrentItemDecoration(adapter)); ListView.AddOnItemTouchListener(this); ListView.ScrollChange += Scroll; ItemTouchHelper.Callback callback = new ItemTouchCallback(adapter, true); itemTouchHelper = new ItemTouchHelper(callback); itemTouchHelper.AttachToRecyclerView(ListView); ListView.ScrollToPosition(MusicPlayer.CurrentID()); if (MusicPlayer.UseCastPlayer) { Snackbar snackBar = Snackbar.Make(ListView, "Queue management with chromecast is currently in beta, expect some bugs.", (int)ToastLength.Short); snackBar.View.FindViewById <TextView>(Resource.Id.snackbar_text).SetTextColor(Color.White); snackBar.Show(); } return(view); }
async Task PopulateList() { if (item.LocalID == -1 && item.YoutubeID == null && adapter?.tracks.Count == 0) { return; } if (item.LocalID != -1) { if (await MainActivity.instance.GetReadPermission() == false) { MainActivity.instance.FindViewById(Resource.Id.loading).Visibility = ViewStates.Gone; return; } adapter = new PlaylistTrackAdapter(); ListView.SetAdapter(adapter); Android.Support.V7.Widget.Helper.ItemTouchHelper.Callback callback = new ItemTouchCallback(adapter, false); itemTouchHelper = new Android.Support.V7.Widget.Helper.ItemTouchHelper(callback); itemTouchHelper.AttachToRecyclerView(ListView); LoaderManager.GetInstance(this).InitLoader(0, null, this); } else if (item.YoutubeID != null) { fullyLoadded = false; SearchableList <Song> tracks = new SearchableList <Song>(); adapter = new PlaylistTrackAdapter(tracks); ListView.SetAdapter(adapter); Android.Support.V7.Widget.Helper.ItemTouchHelper.Callback callback = new ItemTouchCallback(adapter, false); itemTouchHelper = new Android.Support.V7.Widget.Helper.ItemTouchHelper(callback); itemTouchHelper.AttachToRecyclerView(ListView); try { var ytPlaylistRequest = YoutubeManager.YoutubeService.PlaylistItems.List("snippet, contentDetails"); ytPlaylistRequest.PlaylistId = item.YoutubeID; ytPlaylistRequest.MaxResults = 50; var ytPlaylist = await ytPlaylistRequest.ExecuteAsync(); foreach (var item in ytPlaylist.Items) { if (item.Snippet.Title != "[Deleted video]" && item.Snippet.Title != "Private video" && item.Snippet.Title != "Deleted video") { Song song = new Song(item.Snippet.Title, item.Snippet.ChannelTitle, item.Snippet.Thumbnails.High.Url, item.ContentDetails.VideoId, -1, -1, item.ContentDetails.VideoId, true, false) { TrackID = item.Id, ChannelID = item.Snippet.ChannelId }; tracks.Add(song); } } nextPageToken = ytPlaylist.NextPageToken; if (nextPageToken == null) { fullyLoadded = true; } tracks.Invalidate(); adapter.NotifyDataSetChanged(); if (item?.ImageURL == null) { Picasso.With(Android.App.Application.Context).Load(tracks[0].Album).Placeholder(Resource.Drawable.noAlbum).Transform(new RemoveBlackBorder(true)).Into(Activity.FindViewById <ImageView>(Resource.Id.headerArt)); } } catch (System.Net.Http.HttpRequestException) { } } else if (adapter?.tracks.Count != 0) { ListView.SetAdapter(adapter); } }