Ejemplo n.º 1
0
        public override View GetView(int index, View convertView, ViewGroup parent)
        {
            View view = convertView;

            // Create a view if one doesn't already exist
            if (view == null)
            {
                view = _context.LayoutInflater.Inflate(this._listViewLayout, null);
            }

            // Get player and the two text fields that'll display player data
            Player   player                  = _players[index];
            TextView playerNameAndTeam       = view.FindViewById <TextView>(Android.Resource.Id.Text1);
            TextView playerAdditionalDetails = view.FindViewById <TextView>(Android.Resource.Id.Text2);

            // Change formatting of TextView depending on if firstname is empty or not
            // An empty first name means the TextView doesn't need a space to separate first and last names
            string premierTeamName = premierTeamRepository.GetPremierTeamNameFromID(player.PremierTeamID);

            playerNameAndTeam.Text = NameTeamTextFormatting.FormatNameAndTeam(player.Firstname, player.Surname, premierTeamName);

            // Add position and player's price onto second line of text
            string playerPositionName = positionRepository.GetPositionNameByID(player.PositionID);

            playerAdditionalDetails.Text = playerPositionName + ", £" + player.Price + " million";

            return(view);
        }
Ejemplo n.º 2
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.AdminChangePlayerDetailsLayout);

            // Get view's resources
            EditText playerFirstName   = FindViewById <EditText>(Resource.Id.playerDetailsFirstNameEditText);
            EditText playerSurname     = FindViewById <EditText>(Resource.Id.playerDetailsSurnameEditText);
            Spinner  playerPosition    = FindViewById <Spinner>(Resource.Id.playerDetailsPositionSpinner);
            Spinner  playerPremierTeam = FindViewById <Spinner>(Resource.Id.playerDetailsPremierTeamSpinner);
            EditText playerPrice       = FindViewById <EditText>(Resource.Id.playerDetailsPriceEditText);
            Button   saveButton        = FindViewById <Button>(Resource.Id.playerDetailsSaveButton);
            Button   cancelButton      = FindViewById <Button>(Resource.Id.playerDetailsCancelButton);
            Button   deleteButton      = FindViewById <Button>(Resource.Id.playerDetailsDeleteButton);

            // Get selectable positions for spinner and populate the spinner with the position names
            List <Position> positions          = positionRepository.GetAllPositions();
            List <string>   positionNamesArray = new List <string>();

            foreach (Position position in positions)
            {
                positionNamesArray.Add(position.PositionName);
            }
            ArrayAdapter <string> positionSpinnerAdapter = new ArrayAdapter <string>(this, Android.Resource.Layout.SimpleSpinnerItem, positionNamesArray);

            positionSpinnerAdapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            playerPosition.Adapter = positionSpinnerAdapter;

            // Get selectable premier teams for spinner and populate spinner with them
            List <PremierTeam> premierTeams          = premierTeamRepository.GetAllPremierTeams();
            List <string>      premierTeamNamesArray = new List <string>();

            foreach (PremierTeam premierTeam in premierTeams)
            {
                premierTeamNamesArray.Add(premierTeam.PremierTeamName);
            }
            ArrayAdapter <string> premierTeamSpinnerAdapter = new ArrayAdapter <string>(this, Android.Resource.Layout.SimpleSpinnerItem, premierTeamNamesArray);

            premierTeamSpinnerAdapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            playerPremierTeam.Adapter = premierTeamSpinnerAdapter;

            string pageType = this.Intent.GetStringExtra("type");

            if (pageType == "existing")
            {
                // Get JSON serialised player and convert it back to a Player object
                string jsonPlayer = this.Intent.GetStringExtra("selectedPlayer");
                player = JsonConvert.DeserializeObject <Player>(jsonPlayer);

                // Assign player's properties to the relevant editable text fields
                playerFirstName.Text = player.Firstname;
                playerSurname.Text   = player.Surname;
                playerPrice.Text     = player.Price.ToString();
                // Get position name from database
                string selectedPlayerPosition = positionRepository.GetPositionNameByID(player.PositionID);
                playerPosition.SetSelection(positionSpinnerAdapter.GetPosition(selectedPlayerPosition));

                string selectedPlayerPremierTeam = premierTeamRepository.GetPremierTeamNameFromID(player.PremierTeamID);
                playerPremierTeam.SetSelection(premierTeamSpinnerAdapter.GetPosition(selectedPlayerPremierTeam));
            }
            // If type is not existing, assume its "new" as the app won't have player details to assign to the text fields
            else
            {
                player = new Player();
                // If a player doesn't exist, then they cannot be deleted
                deleteButton.Enabled = false;
            }

            saveButton.Click += (sender, args) =>
            {
                Boolean validUserInput = true;

                try
                {
                    // Update player object with user's inputs from text fields
                    player.Firstname     = playerFirstName.Text;
                    player.Surname       = playerSurname.Text;
                    player.Price         = Convert.ToDouble(playerPrice.Text);
                    player.PositionID    = positionRepository.GetPositionIDFromName(playerPosition.SelectedItem.ToString());
                    player.PremierTeamID = premierTeamRepository.GetPremierTeamIDFromName(playerPremierTeam.SelectedItem.ToString());
                }
                catch (ArgumentOutOfRangeException)
                {
                    Toast.MakeText(this, Resource.String.invalid_add_player_input, ToastLength.Long).Show();
                    validUserInput = false;
                }
                catch (FormatException)
                {
                    Toast.MakeText(this, Resource.String.invalid_add_player_price_input, ToastLength.Long).Show();
                    validUserInput = false;
                }

                if (pageType == "existing" && validUserInput is true)
                {
                    playerRepository.UpdatePlayer(player);
                    SetResult(Result.Ok);
                    Finish();
                }
                else if (pageType == "new" && validUserInput is true)
                {
                    player.FantasyTeamID = 0;
                    playerRepository.InsertNewPlayer(player);
                    SetResult(Result.Ok);
                    Finish();
                }
            };

            deleteButton.Click += (sender, args) =>
            {
                // Remove player from the database
                playerRepository.DeletePlayer(player);
                SetResult(Result.Ok);
                Finish();
            };

            cancelButton.Click += (sender, args) =>
            {
                // Return user to previous activity from the stack
                Finish();
            };
        }