private View CreateUserStatsView(AniList.Models.UserModels.User user) { var retView = LayoutInflater.Inflate(Resource.Layout.View_NestedScrollLayout, null); var containerView = retView.FindViewById <LinearLayout>(Resource.Id.Scroll_Container); if (user.Stats?.AnimeStatusDistribution?.Any(x => x.Amount > 0) == true || user.Stats?.MangaStatusDistribution?.Any(x => x.Amount > 0) == true) { containerView.AddView(CreateStatusDistributionView(user.Stats.AnimeStatusDistribution, user.Stats.MangaStatusDistribution)); } if (user.Stats?.AnimeScoreDistribution?.Any(x => x.Amount > 0) == true || user.Stats?.MangaScoreDistribution?.Any(x => x.Amount > 0) == true) { containerView.AddView(CreateScoreDistributionView(user.Stats.AnimeScoreDistribution, user.Stats.MangaScoreDistribution)); } return(retView); }
public void SetupUserView(AniList.Models.UserModels.User user) { var adapter = new FragmentlessViewPagerAdapter(); adapter.AddView(CreateUserDetailsView(user), "Details"); adapter.AddView(CreateUserActivityView(user.Id), "Activity"); adapter.AddView(CreateUserStatsView(user), "Stats"); adapter.AddView(CreateUserFollowingView(user.Id), "Following"); adapter.AddView(CreateUserFollowersView(user.Id), "Followers"); adapter.AddView(CreateUserReviewsView(user.Id), "Reviews"); ViewPager.OffscreenPageLimit = adapter.Count - 1; ViewPager.Adapter = adapter; TabLayout.SetupWithViewPager(ViewPager); }
private View CreateUserDetailsView(AniList.Models.UserModels.User user) { var retView = LayoutInflater.Inflate(Resource.Layout.View_UserDetails, null); ImageLoader.LoadImage(retView.FindViewById <ImageView>(Resource.Id.User_Image), user.Avatar.Large); retView.FindViewById <TextView>(Resource.Id.User_Name).Text = user.Name; var aboutView = retView.FindViewById <ExpandableText>(Resource.Id.User_Description); if (!string.IsNullOrWhiteSpace(user.About)) { aboutView.TextFormatted = MarkdownTextCleaner.ConvertToSpanned(user.About); aboutView.ExpandTextAction = textView => { var builder = new SpannableStringBuilder(MarkdownTextCleaner.ConvertToSpanned(user.About)); textView.MovementMethod = LinkMovementMethod.Instance; textView.SetText(builder, TextView.BufferType.Spannable); MarkdownSpannableFormatter.FormatMarkdownSpannable(this, textView.TextFormatted as SpannableString); }; } else { aboutView.Visibility = ViewStates.Gone; } var followerView = retView.FindViewById <TextView>(Resource.Id.User_Donator); followerView.Visibility = user.DonatorTier > 0 ? ViewStates.Visible : ViewStates.Gone; var userAnimeView = retView.FindViewById <DataRow>(Resource.Id.User_AnimeSummary); var userAnimeListCount = user.Stats.AnimeStatusDistribution.Sum(x => x.Amount); if (userAnimeListCount > 0) { userAnimeView.Visibility = ViewStates.Visible; userAnimeView.TextOne = $"{userAnimeListCount} anime on lists"; userAnimeView.TextTwo = $"{user.GetDurationString(user.Stats.WatchedTime * 60, 1)} watched"; userAnimeView.SetButtonIcon(Resource.Drawable.svg_chevron_right); userAnimeView.ButtonClickable = false; userAnimeView.ButtonVisible = true; userAnimeView.Click += (sender, args) => MediaListActivity.StartActivity(this, user.Id, MediaType.Anime); } var userMangaView = retView.FindViewById <DataRow>(Resource.Id.User_MangaSummary); var userMangaListCount = user.Stats.MangaStatusDistribution.Sum(x => x.Amount); if (userMangaListCount > 0) { userMangaView.Visibility = ViewStates.Visible; userMangaView.TextOne = $"{userMangaListCount} manga on lists"; userMangaView.TextTwo = $"{user.Stats.ChaptersRead} chapters read"; userMangaView.SetButtonIcon(Resource.Drawable.svg_chevron_right); userMangaView.ButtonClickable = false; userMangaView.ButtonVisible = true; userMangaView.Click += (sender, args) => MediaListActivity.StartActivity(this, user.Id, MediaType.Manga); } var userFavorites = retView.FindViewById <DataRow>(Resource.Id.User_Favorites); if (true) { userFavorites.Visibility = ViewStates.Visible; userFavorites.TextOne = "View Favorites"; userFavorites.ButtonClickable = false; userFavorites.ButtonVisible = true; userFavorites.Click += (sender, args) => FavoritesActivity.StartActivity(this, user.Id); } return(retView); }