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); } }