示例#1
0
        private void Favorite_Click(object sender, EventArgs e)
        {
            View           view       = sender as View;
            StepViewHolder viewHolder = viewHolders.First(vh => vh.ItemView == view.Parent);
            Step           step       = Route.Steps[viewHolder.AdapterPosition];

            bool favorite = !step.Stop.GetIsFavorite();

            step.Stop.SetIsFavorite(favorite);

            NotifyItemChanged(viewHolder.AdapterPosition);
        }
示例#2
0
        public void OnClick(View view)
        {
            StepViewHolder viewHolder = viewHolders.First(vh => vh.ItemView == view);
            Step           step       = Route.Steps[viewHolder.AdapterPosition];

            Intent intent = new Intent(view.Context, typeof(StopActivity));

            intent.PutExtra("Stop", step.Stop.Id);
            intent.PutExtra("Line", step.Route.Line.Id);

            view.Context.StartActivity(intent);
        }
示例#3
0
        public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
        {
            // Late load icons
            if (stopBitmap == null)
            {
                stopBitmap      = Utils.GetStopIconForLine(parent.Context, Route.Line, StopIconSize);
                transportBitmap = Utils.GetTransportIconForLine(parent.Context, Route.Line, TransportIconSize);
            }

            View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.StepItem, parent, false);

            itemView.SetOnClickListener(this);

            StepViewHolder viewHolder = new StepViewHolder(itemView)
            {
                FavoriteClick = Favorite_Click
            };

            viewHolder.Icon1.SetImageBitmap(transportBitmap);
            viewHolder.Icon2.SetImageBitmap(transportBitmap);
            viewHolder.Dot.SetImageBitmap(stopBitmap);

            return(viewHolder);
        }
示例#4
0
        public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            StepViewHolder viewHolder = holder as StepViewHolder;
            Step           step       = Route.Steps[position];

            // First update
            if (holder.OldPosition == -1)
            {
                viewHolder.Name.Text = step.Stop.Name;

                viewHolder.Rail1.SetBackgroundColor(color);
                viewHolder.Rail2.SetBackgroundColor(color);

                viewHolder.Rail1.Visibility = position == 0 ? ViewStates.Gone : ViewStates.Visible;
                viewHolder.Rail2.Visibility = position == Route.Steps.Length - 1 ? ViewStates.Gone : ViewStates.Visible;
            }

            // Update texts
            viewHolder.Favorite.SetImageResource(step.Stop.GetIsFavorite() ? Resource.Drawable.ic_star : Resource.Drawable.ic_star_border);

            if (stepTimes != null)
            {
                TimeStep[] timeSteps = stepTimes[position];

                if (timeSteps.Length > 0)
                {
                    viewHolder.Description.Text = Utils.GetReadableTimes(timeSteps, DateTime.Now);
                }
                else
                {
                    viewHolder.Description.Text = "Service terminé";
                }
            }
            else
            {
                viewHolder.Description.Text = "Informations non disponibles";
            }

            // Update icon positions
            if (stepTransports != null)
            {
                float density = viewHolder.ItemView.Context.Resources.DisplayMetrics.Density;

                {
                    Transport currentTransport = position == stepTransports.Length ? null : stepTransports[position];
                    float     currentPosition  = currentTransport == null ? 72 : (int)(1 + 36 - 16 + 72 * currentTransport.Progress);

                    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams((int)(32 * density), (int)(32 * density));
                    layoutParams.AddRule(LayoutRules.CenterHorizontal);
                    layoutParams.SetMargins(0, (int)(currentPosition * density), 0, 0);

                    viewHolder.Icon1.LayoutParameters = layoutParams;
                }

                {
                    Transport previousTransport = position == 0 ? null : stepTransports[position - 1];
                    float     previousPosition  = previousTransport == null ? 72 : (int)(-1 - 36 - 16 + 72 * previousTransport.Progress);

                    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams((int)(32 * density), (int)(32 * density));
                    layoutParams.AddRule(LayoutRules.CenterHorizontal);
                    layoutParams.SetMargins(0, (int)(previousPosition * density), 0, 0);

                    viewHolder.Icon2.LayoutParameters = layoutParams;
                }
            }

            if (!viewHolders.Contains(viewHolder))
            {
                viewHolders.Add(viewHolder);
            }
        }