public override async void ViewWillAppear (bool animated)
        {
            base.ViewWillAppear (animated);

            setInitialUiState();

            rokortService = new Rokort_Service ();

            // Possible TODO: Detect changes to the rower picker and update isTripStarted and UIstate

            setupPickerModels();

            this.rowerPicker.Select (rowerModel.GetRowForRowerId(rokortService.RowerId), 0, true);

            await updateUi();
        }
		protected override async void OnCreate (Bundle bundle)
		{
			base.OnCreate (bundle);

			Window.RequestFeature (WindowFeatures.NoTitle);

			// Initialize data
			listRowerNames.Clear ();
			listRowerNames.Add (new KeyValuePair<String, String>("Jakob Roesgaard Færch", "1541"));
			listRowerNames.Add (new KeyValuePair<String, String>("Trine Roesgaard Færch", "1542"));

			listBoatIds.Clear ();
			listBoatIds.Add (new KeyValuePair<String, String>("ÅKS Brabrand - Ener", "090"));
			listBoatIds.Add (new KeyValuePair<String, String>("Gæstebåd", "080"));
			listBoatIds.Add (new KeyValuePair<String, String>("Ergometer", "500"));

			customArrayAdapterRowerNames = new CustomArrayAdapter (this, listRowerNames, Resource.Layout.SpinnerItem);
			customArrayAdapterBoatdIds = new CustomArrayAdapter (this, listBoatIds, Resource.Layout.SpinnerItem);

			// Set our view from the "main" layout resource
			SetContentView (Resource.Layout.Main);
			startTripWrapperLayout = FindViewById<LinearLayout> (Resource.Id.start_trip_wrapper);
			stopTripWrapperLayout = FindViewById<LinearLayout> (Resource.Id.stop_trip_wrapper);
			distanceLabelTextView = FindViewById<TextView> (Resource.Id.textViewDistanceLabel);
			distanceLabelTextView.SetTextColor (secondaryTextColor);
			button = FindViewById<Button> (Resource.Id.myButton);
			editTextDistance = FindViewById<EditText> (Resource.Id.editTextDistance);
			editTextDistance.TextChanged += (object sender, Android.Text.TextChangedEventArgs e) => {
				if (editTextDistance.Text.ToString().Equals("")) {
					disableButton();
				} else {
					enableButton ();
				}
			};

			spinnerRowerNames = FindViewById<Spinner> (Resource.Id.spinnerRowerNames);
			spinnerRowerNames.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs> (spinnerRowerNames_ItemSelected);
			configureSpinner (spinnerRowerNames, customArrayAdapterRowerNames);

			spinnerBoats = FindViewById<Spinner> (Resource.Id.spinnerBoats);
			spinnerBoats.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs> (spinnerBoats_ItemSelected);
			configureSpinner (spinnerBoats, customArrayAdapterBoatdIds);

			rokortService = new Rokort_Service ();

			// TODO Check for slected user instead

			isTripStarted = await rokortService.hasOngoingTrip ();
			updateUi();

			button.Click += async delegate {
				disableButton ();
				button.Text = GetString (Resource.String.button_disabled_text);

				if (isTripStarted) {
					stopTripWrapperLayout.Visibility = ViewStates.Invisible;
					await rokortService.stopTrip(Convert.ToInt16(editTextDistance.Text));
					isTripStarted = false;
				} else {
					startTripWrapperLayout.Visibility = ViewStates.Invisible;
					rokortService.RowerId = selectedRowerId;
					await rokortService.startTrip (selectedBoatId);
					isTripStarted = true;
				}
				updateUi();
			};
		}