Posts tagged ‘provincias’

1 de abril de 2013

Actualizando los recursos de geografía española

Quizá recordéis este post en el que mostré esta pequeña “librería” (por llamarla algo) con la que pretendía facilitar el trabajo relacionado con la geografía española en Android. Unos recursos que casaban Regiones/CCAA con Provincias y a éstas con sus municipios. Pues bien, a base de tener que usarlo, me di cuenta que podría estar mejor si pudiera encapsular todo el asunto en un objeto que me mostrara los selectores y me devolviera los valores seleccionados.

Fragment selector

Así que me puse a trabajar con un FragmentDialog. En él figuran los tres selectores y, como hasta ahora, cuando eliges Región se te muestran sus Provincias y al elegir una Provincia se te muestran sus municipios. Con todo elegido, se pulsa en “listo” y se reciben los valores de los tres campos.

El Fragment tiene que recibir un Listener para poder hacer la transferencia de datos. Aparte de eso, su uso es tan sencillo como esto:

Así se instancia y se muestra:

GeographySelector gs = new GeographySelector(this);
			gs.setOnGeograpySelectedListener(this);
			FragmentManager fm = getSupportFragmentManager();
			gs.show(fm, "geogTest");

Y así es como se reciben los datos. En este caso he optado por mostrarlos en un Toast ya que es una prueba.Toast con datos elegidos

@Override
	public void onGeographySelected(Map<String, String> hm) {
		Toast.makeText(this,
				"región: " + hm.get(GeographySpain.REGION)
				+ "\n" +
				"provincia: " + hm.get(GeographySpain.PROVINCIA)
				+ "\n" +
				"municipio: " + hm.get(GeographySpain.MUNICIPIO)
				, Toast.LENGTH_LONG).show();

	}

En la captura se muestra que recibes exactamente lo que hubiera seleccionado, ya sea la etiqueta (Región), el mensaje de “aún tiene que elegir de la categoría superior o el valor en sí mismo. Esto es así para permitir a cada uno personalizar la ausencia de selección. Igual quieres que lo tenga todo (en cuyo caso volverías a ponerle el diálogo por delante si recibieras los datos de no-selección) o igual se trata de un formulario opcional. Así el control lo tiene quien lo use.

El código está en el repositorio, el proyecto está configurado como “isLibrary”, de modo que sólo se tiene que añadir a nuestro proyecto como referencia.

Anuncios