public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            View view = inflater.Inflate(Resource.Layout.HomeFavoritesFragment, container, false);

            favoritesView   = view.FindViewById(Resource.Id.FavoritesFragment_Favorites);
            noFavoritesView = view.FindViewById(Resource.Id.FavoritesFragment_NoFavorites);

            RecyclerView linesRecyclerView = view.FindViewById <RecyclerView>(Resource.Id.FavoritesFragment_FavoriteLineList);

            linesRecyclerView.SetLayoutManager(new WrapLayoutManager(Activity));
            linesRecyclerView.AddItemDecoration(new DividerItemDecoration(Activity, LinearLayoutManager.Vertical));
            linesRecyclerView.SetAdapter(linesAdapter = new LinesAdapter(Enumerable.Empty <Line>()));

            RecyclerView stopsRecyclerView = view.FindViewById <RecyclerView>(Resource.Id.FavoritesFragment_FavoriteStopList);

            stopsRecyclerView.SetLayoutManager(new WrapLayoutManager(Activity));
            stopsRecyclerView.AddItemDecoration(new DividerItemDecoration(Activity, LinearLayoutManager.Vertical));
            stopsRecyclerView.SetAdapter(stopsAdapter = new GenericStopsAdapter());

            stopsAdapter.Click += StopsAdapter_Click;

            RefreshFavorites();

            return(view);
        }
Example #2
0
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            View view = inflater.Inflate(Resource.Layout.HomeStopsFragment, container, false);

            // Load view
            RecyclerView recyclerView = view.FindViewById <RecyclerView>(Resource.Id.StopsFragment_StopList);

            recyclerView.SetLayoutManager(new LinearLayoutManager(Activity));
            recyclerView.AddItemDecoration(new DividerItemDecoration(Activity, LinearLayoutManager.Vertical));
            recyclerView.SetAdapter(stopsAdapter = new GenericStopsAdapter());

            // Setup adapter
            stopsAdapter.Click += StopsAdapter_Click;
            stopsAdapter.Filter = (stop, search) =>
            {
                // ASCII normalize strings
                string value   = Encoding.ASCII.GetString(Encoding.ASCII.GetBytes(stop.Name.ToLowerInvariant()));
                string pattern = Encoding.ASCII.GetString(Encoding.ASCII.GetBytes(search.ToLowerInvariant()));

                // Remove non character strings
                value   = new string(value.Select(c => char.IsLetter(c) ? c : ' ').ToArray());
                pattern = new string(pattern.Select(c => char.IsLetter(c) ? c : ' ').ToArray());

                return(value.Contains(pattern));
            };

            // Trigger async loading
            Task.Run(() =>
            {
                foreach (Line line in TramUrWayApplication.Lines)
                {
                    line.Loaded.WaitOne();
                }

                Activity.RunOnUiThread(() =>
                {
                    stopsAdapter.Items = TramUrWayApplication.Lines.SelectMany(l => l.Stops)
                                         .GroupBy(s => Utils.Hash(s.Line.Id, s.Name))
                                         .Select(g => g.First());
                });
            });

            return(view);
        }