java – Obtener id del elemento del spinner en Android studio


estoy tratando de hacer un registro de usuarios el cual debe ingresar una ciudad mediante un spinner. Las id de las ciudades están en mi BD mysql y estoy tratando de capturarlas mediante el método “obtenerId” al cual le otorgo una URL con el nombre de la ciudad de la cual quiero su id (El nombre de la ciudad lo consigo en el método onItemSelected del spinner), esto va a un web service que las devuelve. Mi problema es que una vez que esto ocurre, no sé como capturar el valor para enviarlo al web service del registro de mi usuario. Mi duda es: ¿Cómo le puedo pasar el valor de la id al método onClick para que este vaya al Map?

Acá está mi código:


    public static final String JSON_ARRAY = "result";
    private JSONArray result;
    Spinner spCiudad;
    private ArrayList<String> arrayLocalidad;
    private ArrayList<String> arrayId;

    EditText nom, ape, dir, tel, cor, con, rCon;
    String nombre, apellido, fk_ciudad, direccion, telefono, correo, contrasena, repContrasena;

    Button btnRegistrar, btnCancelar;

    private static String URL_REGIST = "http://192.168.0.2/finjobb/registro_usuarios.php";
    private static String URL_CIUDAD = "http://192.168.0.2/finjobb/obtener_ciudades.php";
    private static String URL_ID_CIUDAD = "http://192.168.0.2/finjobb/obtener_id_ciudades.php";

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_registro);

        nom = findViewById(R.id.etNombre);
        ape = findViewById(R.id.etApellido);
        spCiudad = findViewById(R.id.spCiudad);
        dir = findViewById(R.id.etDireccion);
        tel = findViewById(R.id.etTelefono);
        cor = findViewById(R.id.etCorreo);
        con = findViewById(R.id.edtContrasena);
        rCon = findViewById(R.id.edtContrasenia2);
        btnRegistrar = findViewById(R.id.btnAgregarUsuario);
        btnCancelar = findViewById(R.id.btnCancelar);

        arrayId = new ArrayList<>();
        arrayLocalidad = new ArrayList<>();

        obtenerLocalidad();
        spCiudad.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String localidad = spCiudad.getSelectedItem().toString();
                obtenerId(localidad);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

        btnRegistrar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                nombre = nom.getText().toString().trim();
                apellido = ape.getText().toString().trim();
                fk_ciudad = ????
                direccion = dir.getText().toString().trim();
                telefono = tel.getText().toString().trim();
                correo = cor.getText().toString().trim();
                contrasena = con.getText().toString().trim();
                repContrasena = rCon.getText().toString().trim();

                if (validarRegistro()){
                    if (validarTelefono()) {
                        if (contrasena.equals(repContrasena)) {
                            Registro();
                        } else {
                            Toast.makeText(RegistroActivity.this, "Las contraseñas no coinciden", Toast.LENGTH_SHORT).show();
                            onStop();
                        }
                    } else {
                        Toast.makeText(RegistroActivity.this, "El número de teléfono debe contener 9 dígitos", Toast.LENGTH_SHORT).show();
                        onStop();
                    }
                }else {
                    Toast.makeText(RegistroActivity.this, "No pueden haber campos vacíos", Toast.LENGTH_SHORT).show();
                    onStop();
                }
            }
        });
    }

    private void obtenerLocalidad() {
        StringRequest stringRequest = new StringRequest(Request.Method.GET, URL_CIUDAD,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        JSONObject j;
                        try {
                            j = new JSONObject(response);
                            result = j.getJSONArray(JSON_ARRAY);
                            listarLocalidades(result);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                    }
                });
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }

    private void listarLocalidades(JSONArray jsonArray) {
        for (int i = 0; i < jsonArray.length(); i++) {
            try {
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                String nombreLocalidad = jsonObject.getString("NOMBRE_LOCALIDAD");
                arrayLocalidad.add(nombreLocalidad);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        spCiudad.setAdapter(new ArrayAdapter<>(RegistroActivity.this, android.R.layout.simple_spinner_dropdown_item, arrayLocalidad));
        Collections.sort(arrayLocalidad);
    }

    private void obtenerId(String localidad) {
        StringRequest stringRequest = new StringRequest(Request.Method.GET, URL_ID_CIUDAD + localidad,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        JSONObject j;
                        try {
                            j = new JSONObject(response);
                            result = j.getJSONArray(JSON_ARRAY);
                            listarId(result);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                    }
                });
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }

    private void listarId(JSONArray jsonArray) {
        for (int i = 0; i < jsonArray.length(); i++) {
            try {
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                String idCiudad = jsonObject.getString("ID_LOCALIDAD");
                arrayId.add(idCiudad);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }

    public boolean validarTelefono(){

        boolean retorno = true;

        if(telefono.length() != 9){
            retorno = false;
        }
        return retorno;
    }

    public boolean validarRegistro(){

        boolean retorno=true;

        if(nombre.isEmpty())
        {
            nom.setError("No se permiten campos vacíos");
            retorno=false;
        }
        if (apellido.isEmpty())
        {
            ape.setError("No se permiten campos vacíos");
            retorno=false;
        }
        if (direccion.isEmpty())
        {
            dir.setError("No se permiten campos vacíos");
            retorno=false;
        }
        if (telefono.isEmpty() )
        {
            tel.setError("No se permiten campos vacíos");
            retorno=false;
        }
        if (correo.isEmpty())
        {
            cor.setError("No se permiten campos vacíos");
            retorno=false;
        }
        if (contrasena.isEmpty())
        {
            con.setError("No se permiten campos vacíos");
            retorno=false;
        }
        if (repContrasena.isEmpty())
        {
            rCon.setError("No se permiten campos vacíos");
            retorno=false;
        }
        return retorno;
    }

    private void Registro() {

        StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_REGIST,
                new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                try {
                    JSONObject jsonObject = new JSONObject(response);
                    String success = jsonObject.getString("success");
                    if (success.equals("1")) {
                        Toast.makeText(RegistroActivity.this, "Se ha registrado exitosamente", Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(RegistroActivity.this, "El correo ingresado ya existe", Toast.LENGTH_LONG).show();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                    Toast.makeText(RegistroActivity.this, "Error al registrar! " + e.toString(), Toast.LENGTH_SHORT).show();
                }
            }
            }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(RegistroActivity.this, "Error al registrar! " + error.toString(), Toast.LENGTH_SHORT).show();
            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> parametros = new HashMap<>();
                parametros.put("nombre", nombre);
                parametros.put("apellido", apellido);
                parametros.put("fk_ciudad", fk_ciudad);
                parametros.put("direccion", direccion);
                parametros.put("telefono", telefono);
                parametros.put("correo", correo);
                parametros.put("contrasena", contrasena);
                return parametros;

            }
        };
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);

    }
    public void onClickCancelar(View view) {
        finish();

    }
}

Gracias de antemano!