contacto[arroba]digitallearning.es

Proyecto Content Provider personalizado (II)

Post Series: Content Providers personalizados

Continuamos con el segundo proyecto para ver la implementación práctica de un Content Provider personalizado.

En el anterior proyecto, que denominamos CarteraClientes, vimos la creación del Content Provider utilizando una base de datos SQLite para insertar datos de clientes, y en este segundo, que denominaremos ClienteProvider solicitaremos los datos de dicho Content Provider, utilizando la clase ContentResolver.

Elementos del proyecto Android ClienteProvider

Enumeramos los elementos necesarios para el desarrollo de este segundo proyecto:

  • Clase MainActivity, que herede de la clase base ListActivity, encargada de mostrar los datos solicitados por el ContentResolver, y mostrarlos en un componente ListView.
  • Clase AdaptadorCliente, que herede de la clase base BaseAdapter, encargada de construir la vista de cada uno de los ítems que se mostrarán en el componente ListView.
  • Clase Cliente, que permita crear nuevos objetos Cliente, formado por los métodos getters y setters (métodos de acceso a propiedades).
  • Layout activity_main.xml, formado por un componente de tipo selección ListView, encargado de mostrar los clientes almacenados, y un componente de tipo Button que permitirá eliminar el registro seleccionado por el usuario.
  • Layout activity_adaptador_cliente.xml, que construirá la vista de cada ítem del componente ListView. Se definen tres componentes de tipo TextView.

Estructura del proyecto

Vemos aquí la estructura del proyecto ClienteProvider:

Estructura Proyecto acceso a Content Provider personalizado en Android

Código fuente del proyecto ClienteProvider

Presentamos las diferentes clases y ficheros layout que componen este Proyecto, así como la creación y estructura de la base de datos ClientesComo siempre, puedes descargarte todo el código al final de este tutorial

ClienteProvider\src\com\academiaandroid\clienteprovider\MainActivity.java

Main Activity Proyecto ClienteProvider

1. Se crea una nueva clase llamada MainActivity, que hereda de la clase base ListActivity, encargada de mostrar los datos solicitados por el ContentResolver, y mostrarlos en un componente ListView:

2. Dentro del método onCreate(), se enlazan los componentes con sus recursos a nivel de layout, y se invoca al método setAdapter(), recibiendo como argumento la instancia de la clase AdaptadorCliente(), cuyo constructor está compuesto por el contexto y un ArrayList de objetos Cliente, que devuelve el método mostrarRegistrosAplicacion():

ClienteProvider\src\com\academiaandroid\clienteprovider\Cliente.java

1. Se define una clase Cliente, que permitirá crear nuevos objetos, con los datos de cada registro de la base de datos (métodos getters y setters):

2. Dentro de esta clase, también se define el método mostrarRegistrosAplicacion(), permite consultar la tabla Clientes, almacenando los resultados en un objeto Cursor. Este método devuelve un ArrayList de objetos Cliente, con todos los registros almacenados:

ClienteProvider\src\com\academiaandroid\clienteprovider\AdaptadorCliente.java

1. Se crea una nueva clase llamada AdaptadorCliente, que heredará de la clase base BaseAdapter, encargada de construir la vista de cada uno de los ítems que se mostrarán en el componente ListView:

2. Por último se construye la vista por cada ítem, sobrescribiendo el método getView() (devuelve un objeto de tipo View), a partir del ArrayList recibido y la posición que ocupa:

ClienteProvider\res\layout\activity_main.xml

Layout Main Activity proyecto ClienteProvider

  1. A nivel de layout (activity_main.xml), se implementa un componente de tipo selección ListView, encargado de mostrar los clientes almacenados, además de añadir un componente de tipo Button encargado de eliminar el registro seleccionado por el usuario:

ClienteProvider\res\layout\activity_adaptador _ cliente.xml

Layout proyecto ClienteProvider Activity Adaptador Cliente

  1. Se define un nuevo layout denominado activity_adaptador_cliente.xml, que construirá la vista de cada ítem del componente ListView. Se definen tres componentes de tipo TextView para mostrar información de cada fila de un registro (campo _id, cliente y telefono):

Consultas Transact-SQL

  • Crear base de datos «Clientes»:
  • Crear tabla «NuevosClientes»:

Estructura base de datos «Clientes.sqlite»
Vemos en esta imagen la estructura de dicha base de datos:

 

Estructura Base de Datos

 

Descarga proyecto

Descargar

 

En la próxima y última publicación de esta serie, explicaremos en un video ambos proyectos y mostraremos sus funcionalidades.