Programación Android, Ejemplo de Bases de datos & ListView IV

Android SQLite

En la última entrada nos quedamos a falta de lanzar una segunda Activity con los datos del ítem seleccionado del ListView, para poder modificarlos posteriormente. Con esta entrada terminaremos este ejemplo de como usar bases de datos en Android, con POO y MVC.

Implementar OnItemClickListener

En primer lugar vamos a implementar el Listener OnItemClickListener en la primera Activity, para que cuando suceda este evento recojamos la información del ítem seleccionado y lo enviemos a la segunda Activity. Añadiremos el Listener a la firma de nuestra Activity, y posteriormente escribiremos el método que nos pide:

public class MainActivity extends Activity implements OnClickListener, OnItemClickListener {
/* ... */

	@Override
	public void onItemClick(AdapterView<?> adapter, View view, int position,
			long id) {
		// TODO Añadir el código para recuperar la información y mandarla a la
		// segunda Activity.

	}
}

Leer más…

Programación Android, Ejemplo de Bases de datos & ListView III

Android SQLite

En la entrada anterior sobre el manejo de bases de datos nos quedamos en el punto en que habíamos copiado los datos de una tabla a otra, pero nos faltaba mostrarlos en el segundo ListView, que iba a contener un Adapter personalizado para poder mostrar los 3 campos que guardamos en la tabla.

Crear el Adapter personalizado

El Adapter lo vamos a crear siguiendo los pasos que ya dijimos en las entradas:

En primer lugar crearemos la vista del ítem del ListView, con 3 TextView en los que mostrar los datos:

<!--?xml version="1.0" encoding="utf-8"?-->








Leer más…

Programación Android, Ejemplo de Bases de datos & ListView II

Android SQLite

En la anterior publicación sobre el manejo de bases de datos nos quedamos en el punto en el que teníamos que recoger los datos de la BD para mostrarlos en el primer ListView.

Creando la clase Modelo

Para hacer esto en primer lugar vamos a crear una nueva clase, que actuará de Modelo de datos, es decir, será una clase que va a representar la estructura de la tabla a la que queremos acceder, de manera que los datos de cada tupla de la tabla se almacenarán en un objeto de la clase Modelo creada:

/**
 * Clase Modelo de las tablas de la BD.
 *
 * @author ProyectoSimio
 *
 */
public class DatosTabla {
	private int _id;
	private String nombre, apellido, telefono;

	/**
	 * Constructor de la clase Modelo para las tablas de la BD
	 *
	 * @param _id
	 * @param nombre
	 * @param apellido
	 * @param telefono
	 */
	public DatosTabla(int _id, String nombre, String apellido, String telefono) {
		this._id = _id;
		this.nombre = nombre;
		this.apellido = apellido;
		this.telefono = telefono;
	}

	// Getters & setters:
	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	// El campo _id es la clave primaria que no tiene sentido modificar, por lo
	// tanto no le creamos un set a este campo.
	public int get_id() {
		return _id;
	}

}

Leer más…

Programación Android, Ejemplo de Bases de datos & ListView I

Android SQLite

Después de explicar cómo gestionar bases de datos en las entradas Bases de Datos I (Modelo-Vista-Controlador), Base de datos II y Bases de Datos III, vamos a mostrar un ejemplo práctico en el que utilizaremos también un ListView para mostrar los datos que recojamos de la Base de Datos, y además incorporaremos la orientación a objetos en nuestro código, para que quede más ordenado el código de nuestra aplicación y posteriormente sea más fácil de mantener.

En primer lugar vamos a explicar un poco en qué consistirá el proyecto: Vamos a crear dos tablas distintas. En la primera, en caso de que no contenga datos, insertaremos una colección de datos al ejecutar la aplicación. Una vez que tengamos datos en la primera de las tablas, pulsando un botón en la interfaz gráfica copiaremos el contenido de la primera tabla a una segunda tabla. También habilitaremos un botón que borrará todo el contenido de la segunda tabla. Por último, pulsando uno de los registros del ListView en que se muestran los datos de la segunda tabla se abrirá una nueva Activity en la que mostraremos en detalle los datos que corresponden a ese registro, y además podremos modificarlos.

Creando el interfaz principal

Para la interfaz hemos optado por un LinearLayout que contiene 2 botones y 2 ListViews, además de 2 TextViews para ayudar a diferenciar entre los ListViews:

Main Layout
Main Layout

Leer más…

Programación Android, ListView & Adapter personalizado II

En la anterior entrada creamos un Adapter personalizado para mostrar una vista creada por nosotros en cada ítem del ListView, pero ya comentamos que tenía un problema de optimización.

Este problema consistía en que siempre estábamos creando una nueva vista por cada ítem que contenía la colección que queríamos mostrar en el ListView, por lo que si utilizamos una colección muy grande, creamos demasiadas vistas, lo que consumiría mucha memoria (algo sobre lo que prestar mucha atención en un smartphone).

En realidad esto no es del todo cierto, Android lo que hace es almacenar sólo 13 de estas vistas del ListView en la memoria. Sin embargo sí que estamos haciendo demasiadas llamadas a crear vistas en el anterior Adapter, problema que se arregla reutilizando las vistas, teniendo en cuenta que ya previamente las habíamos creado.

Leer más…

Programación Android, ListView & Adapter personalizado I

Ahora que hemos empezado a manejar adaptadores y listas con el Spinner, vamos a dar un paso más, utilizando el control ListView y gestionando su contenido con un Adapter personalizado, de manera que lo que visualicemos en cada celda de la lista esté diseñado por nosotros mismos.

Creando el ListView

En primer lugar debemos crear nuestro interfaz de usuario. Lógicamente debemos añadir un ListView, en el que mostraremos los datos que queramos, y en nuestro caso vamos a incorporar en la parte superior algunos TextView que indicarán el nª de la celda que ocupa el ítem seleccionado del ListView y el texto que contenga.

Quedaría así:

Layout ListView
Layout ListView

Leer más…