private async Task InitUI() { m_refresher.Refreshing = true; AndHUD.Shared.Show(this, Resources.GetString(Resource.String.loading_in_progress), -1, MaskType.Black); m_handler_DismissHandHUDIfNeeded.RemoveCallbacks(m_workRunnable_DismissHandHUDIfNeeded); //Get trajet from local database try { m_trajet = await Trajet.GettrajetDetailsToShowOnScreen(new FileAccessManager(), m_itrajetLocalID); //To never get empty listview while (m_trajet.m_lsarret.Count < 22) { m_trajet.m_lsarret.Add(new Arret()); } m_trajet.m_lsarret.Reverse(); } catch (Exception) { DynamicUIBuild_Utils.ShowSnackBar_WithOKButtonToClose(this, m_layoutRoot, Resource.String.snackbar_errorHappened); if (m_trajet == null || m_trajet.m_lsarret == null) { m_refresher.Refreshing = false; return; } } try { string stextviewLocationStartText = m_trajet.m_sLocationStart; string stextviewTimeStartText = m_trajet.m_sTimeStart; string stextviewLocationEndText = m_trajet.m_sLocationEnd; string stextviewTimeEndText = m_trajet.m_sTimeEnd; //update ui (add empty items if mode conduite to avoid showing white screen when there is not enouth Arret) List <Arret> tmp = new List <Arret>(); if (m_bIsModeConduite) { for (int i = 0; i < 20; i++) { tmp.Add(new Arret()); } } tmp.AddRange(m_trajet.m_lsarret); m_adapter.RefreshListArret(tmp); UpdateGpsLayout(); UpdateAltimeter(); //Start m_textviewLocationStart.Text = stextviewLocationStartText; m_textviewTimeStart.Text = stextviewTimeStartText; //End m_textviewLocationEnd.Text = stextviewLocationEndText; m_textviewTimeEnd.Text = stextviewTimeEndText; //Time before start UpdateTimeBeforeStart(); //Canal radio.... always hiden for the moment (reunion début Mars 2018 m_textviewRadio.Text = string.Format(Resources.GetString(Resource.String.activitytrajetDetails_textview_radio), m_trajet.m_lsarret[0]?.m_sRadioCanal); //Next stop and Current stop if (m_bIsModeConduite && m_nextArret == null) { m_nextArret = m_adapter[m_adapter.Count - 1]; } UpdateLayoutNextStop(); UpdateLayoutCurrentStop(); //Btn valid preparation if (m_bIsModeConduite) { m_btnValidPreparation.Visibility = ViewStates.Gone; } else { m_btnValidPreparation.Visibility = ViewStates.Visible; } //Disable listview scrolling if (m_bIsModeConduite) { m_listview.Enabled = false; } else { m_listview.Enabled = true; } //If activity has been reloading, remove all old Arret if (m_currentArret != null) { m_adapter.RemoveLastItemsUntilCurrentStop(m_currentArret); } //In every case, scroll the list view to the very bottom m_listview.SmoothScrollToPosition(m_adapter.Count); //Verify if a arret has already been passed in that trajet. If yes, go to it directly GoToLatestStopPassedIfNeeded(); } catch (Exception e) { DynamicUIBuild_Utils.ShowSnackBar_WithOKButtonToClose(this, m_layoutRoot, Resource.String.snackbar_errorHappened); MobileCenter_Helper.ReportError(new FileAccessManager(), e, GetType().Name, MethodBase.GetCurrentMethod().Name); } finally { m_refresher.Refreshing = false; m_handler_DismissHandHUDIfNeeded.PostDelayed(m_workRunnable_DismissHandHUDIfNeeded, 15000); } }