예제 #1
0
        protected override void OnBindDetailsViewHolder(WeatherDailyItemViewHolderBase viewHolder, int position, WeatherDataPointHourly[] hourly)
        {
            if (viewHolder == null)
            {
                return;
            }

            base.OnBindDetailsViewHolder(viewHolder, position, hourly);

            var holder  = (WeatherDailyItemViewHolder)viewHolder;
            var context = holder.ItemView.Context;

            var pressureText = string.Empty;
            var minPressure  = hourly?.Min(p => p.Pressure);
            var maxPressure  = hourly?.Max(p => p.Pressure);

            if (minPressure.HasValue && maxPressure.HasValue)
            {
                if (hourly.Length == 1 || (int)minPressure.Value == (int)maxPressure.Value)
                {
                    pressureText = WeatherTools.ConvertPressureToString(minPressure.Value, "{1} {0:f0} {2}",
                                                                        context.GetString(Resource.String.Pressure), WeatherTools.PressureUnitString);
                }
                else
                {
                    pressureText = WeatherTools.ConvertPressureToString(minPressure.Value, maxPressure.Value,
                                                                        "{2} {0:f0}-{1:f0} {3}", context.GetString(Resource.String.Pressure),
                                                                        WeatherTools.PressureUnitString);
                }
            }
            if (holder.Pressure != null)
            {
                holder.Pressure.Text       = pressureText;
                holder.Pressure.Visibility = IsVisible(pressureText);
            }

            var humidityText = string.Empty;
            var minHumidity  = hourly?.Min(p => p.Humidity);
            var maxHumidity  = hourly?.Max(p => p.Humidity);

            if (minHumidity.HasValue && maxHumidity.HasValue)
            {
                var txthumidity = context.GetString(Resource.String.Humidity);
                humidityText = hourly.Length == 1 || (int)(minHumidity * 100) == (int)(maxHumidity * 100)
                    ? WeatherTools.Format("{0} {1:p0}", txthumidity, minHumidity)
                    : WeatherTools.Format("{0} {1:f0}-{2:p0}", txthumidity, minHumidity * 100, maxHumidity);
            }
            if (holder.Humidity != null)
            {
                holder.Humidity.Text       = humidityText;
                holder.Humidity.Visibility = IsVisible(humidityText);
            }
        }
        protected virtual void OnBindDetailsViewHolder(WeatherDailyItemViewHolderBase viewHolder, int position, WeatherDataPointHourly[] hourly)
        {
            if (Daily == null || viewHolder == null || WeatherTools == null)
            {
                return;
            }

            var item    = Daily[position];
            var context = viewHolder.ItemView.Context;

            var sunriseText = string.Empty;

            if (item.Astronomy?.Sunrise != null)
            {
                sunriseText = WeatherTools.Format("{0} {1:t}", context.GetString(Resource.String.Sunrise),
                                                  item.Astronomy.Sunrise.Value.ToLocalTime());
            }
            if (viewHolder.Sunrise != null)
            {
                viewHolder.Sunrise.Text       = sunriseText;
                viewHolder.Sunrise.Visibility = IsVisible(sunriseText);
            }

            var sunsetText = string.Empty;

            if (item.Astronomy?.Sunset != null)
            {
                sunsetText = WeatherTools.Format("{0} {1:t}", context.GetString(Resource.String.Sunset),
                                                 item.Astronomy.Sunset.Value.ToLocalTime());
            }
            if (viewHolder.Sunset != null)
            {
                viewHolder.Sunset.Text       = sunsetText;
                viewHolder.Sunset.Visibility = IsVisible(sunsetText);
            }

            if (viewHolder.WeatherByHourly != null)
            {
                LayoutManager?.Dispose();
                LayoutManager = new LinearLayoutManager(context, LinearLayoutManager.Horizontal, false);
                WeatherHourlyItemAdapter?.Dispose();
                WeatherHourlyItemAdapter = new WeatherHourlyItemAdapter(hourly, _weakReferenceWeatherTools);
                viewHolder.WeatherByHourly.SetLayoutManager(LayoutManager);
                viewHolder.WeatherByHourly.SetAdapter(WeatherHourlyItemAdapter);
            }
        }