public void SetCollection(MediaListCollection collection) { SetContentView(Resource.Layout.Activity_MediaLists); _collection = collection; var pagerAdapter = new FragmentlessViewPagerAdapter(); _recyclerAdapters = new List <MediaListRecyclerAdapter>(); var listOrder = GetListOrder(); var orderedLists = !listOrder.Any() ? _collection.Lists : _collection.Lists.Where(x => listOrder.All(y => y.Key != x.Name) || listOrder.FirstOrDefault(y => y.Key == x.Name).Value) .OrderBy(x => listOrder.FindIndex(y => y.Key == x.Name)).ToList(); _currentSort = Presenter.GetMediaListSortType(_mediaType); _currentSortDirection = Presenter.GetMediaListSortDirection(_mediaType); if (_currentSort != MediaListSortComparer.MediaListSortType.NoSort) { _collection.Lists.ForEach(list => list.Entries.Sort(new MediaListSortComparer(_currentSort, _currentSortDirection))); } foreach (var statusList in orderedLists) { if (statusList.Entries?.Any() != true) { continue; } var adapter = new MediaListRecyclerAdapter(this, statusList, Presenter.GetCardType(), item => MediaListViewModel.CreateViewModel(item, _collection.User.MediaListOptions.ScoreFormat, Settings.DisplayUpcomingEpisodeTimeAsCountdown, Settings.MediaListProgressDisplay, true, Settings.ShowEpisodeAddButtonForRepeatingMedia), Presenter.GetMediaListItemViewType(), Presenter.GetHighlightPriorityItems(), Presenter.GetUseLongClickForEpisodeAdd()); adapter.SetFilter(_filterModel); _recyclerAdapters.Add(adapter); var listView = LayoutInflater.Inflate(Resource.Layout.View_List, null); listView.FindViewById <RecyclerView>(Resource.Id.List_RecyclerView).SetAdapter(adapter); pagerAdapter.AddView(listView, statusList.Name); } _viewPager.Adapter = pagerAdapter; _tabLayout.SetupWithViewPager(_viewPager); SetupToolbar(_collection.User.Name); }
private View CreateMediaFollowingUsersMediaListStatusView(int mediaId) { var mediaListEnumerable = Presenter.GetMediaFollowingUsersMediaListsEnumerable(mediaId, PageLength); var retView = LayoutInflater.Inflate(Resource.Layout.View_List, null); var recycler = retView.FindViewById <RecyclerView>(Resource.Id.List_RecyclerView); var recyclerAdapter = new MediaListRecyclerAdapter(this, CardType, mediaListEnumerable, MediaListViewModel.CreateUserMediaListViewModel) { ClickAction = (viewModel, position) => UserActivity.StartActivity(this, viewModel.Model?.User?.Id ?? 0) }; recycler.SetAdapter(recyclerAdapter); return(retView); }
private View GetMediaListCollectionView() { var mediaCollectionView = LayoutInflater.Inflate(Resource.Layout.Fragment_MediaLists, null); var pagerAdapter = new FragmentlessViewPagerAdapter(); _recyclerAdapters = new List <MediaListRecyclerAdapter>(); var listOrder = GetListOrder(); var orderedLists = _collection.Lists .Where(x => listOrder.FirstOrDefault(y => y.Key == x.Name).Value) .OrderBy(x => listOrder.FindIndex(y => y.Key == x.Name)).ToList(); _currentSort = Presenter.GetMediaListSortType(_type); _currentSortDirection = Presenter.GetMediaListSortDirection(_type); if (_currentSort != MediaListSortComparer.MediaListSortType.NoSort) { _collection.Lists.ForEach(list => list.Entries.Sort(new MediaListSortComparer(_currentSort, _currentSortDirection))); } foreach (var statusList in orderedLists) { if (statusList.Entries?.Any() != true) { continue; } var adapter = new MediaListRecyclerAdapter(Activity, statusList, Presenter.GetCardType(), item => MediaListViewModel.CreateViewModel(item, _collection.User.MediaListOptions.ScoreFormat, Presenter.GetDisplayTimeUntilAiringAsCountdown(), Presenter.GetProgressDisplayType(), false, Presenter.GetShowEpisodeAddButtonForRepeatingMedia()), Presenter.GetMediaListItemViewType(), Presenter.GetHighlightPriorityItems(), Presenter.GetUseLongClickForEpisodeAdd(), async(viewModel, callback) => { if (viewModel.Model.Progress + 1 == (viewModel.Model.Media.Episodes ?? viewModel.Model.Media.Chapters)) { EditMediaListItemDialog.Create(Activity, Presenter, viewModel.Model.Media, viewModel.Model, _collection.User.MediaListOptions, true); } else { await Presenter.IncreaseMediaProgress(viewModel.Model); } callback?.Invoke(); }) { LongClickAction = (viewModel, position) => EditMediaListItemDialog.Create(Activity, Presenter, viewModel.Model.Media, viewModel.Model, _collection.User.MediaListOptions) }; adapter.SetFilter(_filterModel); _recyclerAdapters.Add(adapter); var listView = LayoutInflater.Inflate(Resource.Layout.View_SwipeRefreshList, null); listView.FindViewById <RecyclerView>(Resource.Id.List_RecyclerView).SetAdapter(adapter); pagerAdapter.AddView(listView, statusList.Name); var swipeRefreshLayout = listView.FindViewById <SwipeRefreshLayout>(Resource.Id.List_SwipeRefreshLayout); if (Presenter.GetUseSwipeToRefreshOnMediaLists()) { swipeRefreshLayout.Enabled = true; swipeRefreshLayout.Refresh += (sender, e) => { _collection = null; RecreateFragment(); if (sender is SwipeRefreshLayout refreshLayout) { refreshLayout.Refreshing = false; } }; } else { swipeRefreshLayout.Enabled = false; } } var viewPagerView = mediaCollectionView.FindViewById <ViewPager>(Resource.Id.MediaLists_ViewPager); viewPagerView.Adapter = pagerAdapter; mediaCollectionView.FindViewById <TabLayout>(Resource.Id.MediaLists_Tabs).SetupWithViewPager(viewPagerView); return(mediaCollectionView); }