private void loadStates() {
   Country country = Countries.getCountryForName(countryField.getText().toString());
   if (country != null) {
     List<String> states = country.getStates();
     stateField.setAdapter(
         new ArrayAdapter<>(getActivity(), android.R.layout.simple_dropdown_item_1line, states));
   }
 }
 private void loadCountries() {
   Country[] countries = Countries.getCountries();
   List<String> items = new ArrayList<>();
   for (Country country : countries) {
     items.add(country.getName());
   }
   countryField.setAdapter(
       new ArrayAdapter<>(getActivity(), android.R.layout.simple_dropdown_item_1line, items));
 }
  private void placeOrder() {
    EditText[] entries =
        new EditText[] {
          phoneNumberField,
          address1Field,
          address2Field,
          cityField,
          stateField,
          zipCodeField,
          countryField
        };
    for (EditText entry : entries) {
      entry.setEnabled(false);
    }

    user.setFirstName(firstNameField.getText().toString());
    user.setLastName(lastNameField.getText().toString());
    user.setPhone(phoneNumberField.getText().toString());
    user.setAddress1(address1Field.getText().toString());
    user.setAddress2(address2Field.getText().toString());
    user.setCity(cityField.getText().toString());
    user.setState(stateField.getText().toString());
    user.setZipCode(zipCodeField.getText().toString());
    Country selectedCountry = Countries.getCountryForName(countryField.getText().toString());
    if (selectedCountry != null) {
      user.setCountry(selectedCountry.getCode());
    }

    ProgressDialog progressDialog =
        ProgressDialog.show(getActivity(), "Please wait...", "Placing Order", true);

    RoboVMWebService.getInstance()
        .placeOrder(
            user,
            (response) -> {
              progressDialog.hide();
              progressDialog.dismiss();
              for (EditText entry : entries) {
                entry.setEnabled(true);
              }

              if (response.isSuccess()) {
                RoboVMWebService.getInstance().getBasket().clear();

                Toast.makeText(getActivity(), "Your order has been placed!", Toast.LENGTH_LONG)
                    .show();

                if (orderPlacedListener != null) {
                  orderPlacedListener.run();
                }
              } else {
                List<ValidationError> errors = response.getErrors();
                String alertMessage = "An unexpected error occurred! Please try again later!";

                if (errors != null) { // We handle only the first error.
                  ValidationError error = errors.get(0);

                  String message = error.getMessage();
                  String field = error.getField();
                  if (field == null) {
                    alertMessage = message;
                  } else {
                    switch (field) {
                      case "firstName":
                        alertMessage = "First name is required";
                        break;
                      case "lastName":
                        alertMessage = "Last name is required";
                        break;
                      case "address1":
                        alertMessage = "Address is required";
                        break;
                      case "city":
                        alertMessage = "City is required";
                        break;
                      case "zipCode":
                        alertMessage = "ZIP code is required";
                        break;
                      case "phone":
                        alertMessage = "Phone number is required";
                        break;
                      case "country":
                        alertMessage = "Country is required";
                        break;
                      default:
                        alertMessage = message;
                        break;
                    }
                  }
                }
                Toast.makeText(getActivity(), alertMessage, Toast.LENGTH_LONG).show();
              }
            });
  }