Next level cheating right here. pic.twitter.com/2hirkZqTdu
— Khalil Sehnaoui (@sehnaoui) September 27, 2017
Clearly whoever designed these does not have cats. pic.twitter.com/3Xyg7q2uAS
— Carolyn Shannon (@chicagomom) September 28, 2017
me_irl pic.twitter.com/QQsEmMv5yI
— me irl (@ItMeIRL) September 30, 2017
public sealed class TrackCollectionPagerAdapter : FragmentStatePagerAdapter
{
public event Action<Album, AlbumActionType> OnCardClick;
public TrackCollectionPagerAdapter(FragmentManager fm) : base(fm)
{
}
public TrackCollectionPagerAdapter(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
{
}
public HashSet<string> Categories { get; } = new HashSet<string>();
public override int Count => Categories.Count;
public override Fragment GetItem(int position)
{
//! TODO This is leaking event subscribers
var fragment = new TrackCollectionFragment(Categories.ElementAt(position));
fragment.ViewCreated += () => {
fragment.OnCardClick += OnCardClick;
};
fragment.ViewDestroyed += () => {
fragment.OnCardClick -= OnCardClick;
};
return fragment;
}
public override ICharSequence GetPageTitleFormatted(int position)
{
// TODO: There really is no way to localize this.
var category = Categories.ElementAt(position).ToCharArray();
category[0] = char.ToUpper(category[0]);
Array.Resize(ref category, category.Length + 1);
category[category.Length - 1] = 's';
return new Java.Lang.String(new string(category)); // This sucks.
}
public void AddCategory(string categoryIdentifier)
{
var oldLength = Count;
Categories.Add(categoryIdentifier);
if (oldLength != Count)
RootApplication.InvokeInterface(() => NotifyDataSetChanged());
}
}