Proyecto: Aplicación para gestión de ventas

El listado de vehículos resultante, debe identificar fácilmente qué vehículos se encuentran en cada categoría, por lo que dispondrá de un indicador visual y la posibilidad de filtrar la base de datos para mostrar todos los vehículos almacenados o sólo aquellos pendientes de venta.

Por cada vehículo, el listado debería presentar al menos los datos de: marca, modelo, km, año y precio. Pero no sólo estos datos son relevantes en la compra/venta de un coche. Existen otros como la cilindrada o la potencia que también deberían recogerse. Para ello se dispondrá de una ficha descriptiva de cada vehículo con la información completa.

¿Cómo llevamos todo esto a la práctica?

En primer lugar hay que crear la base de datos que alimentará al App.

Utilizaremos una clase auxiliar para definir los campos que contendrá la base de datos, los constructores (uno sin argumentos y otro sobrecargado) y los métodos get y set para acceder a cada uno de los campos.

 

También utilizaremos una clase auxiliar para llmar a la conexión con la base de datos.

A continuación, vamos a crear la interfaz de la pantalla de bienvenida. Esta contendrá un ImageButton con la funcionalidad de cargar el listado de coches en una nueva pantalla.

 

Para presentar la información en esta nueva pantalla vamos a utilizar dos layouts distintos.

El primero de ellos, conforma la estructura de la tabla con tres elementos estructurales dentro de un LinearLayout:

  • Un Toolbar que implemeta un ActionBar. Partiendo de un elemento del tipo menu.xml y declarando en el método onCreate de la clase:

toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

  • Una tabla con una fila de encabezados
  • Un RecyclerView para rellenar el contenido de la tabla con cada vehículo introducido. El uso de este elemento ofrecerá flexibilidad en el diseño, ya que se adapta al número de ítems a mostrar.

El segundo, es el que se utiliza como estructura para cada elemento a presentar dentro del RecyclerView, siendo esta estructura una fila de tabla, donde cada celda contendrá uno de los elementos descriptivos.

 

Para implementar el funcionamiento del RecyclerView, será necesario crear un Adaptador con sus correspondientes métodos ViewHolder. Además, vamos a implementar el acceso a la ficha completa de la información del coche, pulsando sobre cada uno de estos desde el listado. Para recoger este evento, necesitaremos añadir al adaptador, los correspondientes listener y métodos onClick.

 

Realizados estos pasos previos, ya puede implementarse el comportamiento de la clase que gestiona el listado.

Este comportamiento consistirá en cargar el RecyclerView y rellenarlo con la información de la base de datos. Los items se asociarán al adaptador, que capturará el evento y conducirá a la ficha completa. Por otra parte, se añadirá un menú de preferencias con el que filtrar el listado de coches en función de su estado (vendido o no vendido). Este menú enlazará también a dos actividades a través de las cuales añadir o eliminar vehículos.

Veamos ahora en primer lugar la ficha de vehículo.

Esta ficha se rellenará con los datos del elemento seleccionado en el listado de coches recuperado a través de un bundle y, además de visualizar la información, permitirá editarla.

 La opción de menú Insertar coche conducirá a una pantalla similar, con la salvedad de que no se recupera ningún dato, simplemente se introduce información nueva.

La lógica de esta actividad es sencilla: se recogen los valores introducidos en cada vista (TextView, CheckBox y Spinner) y se envía una sentencia de inserción a la base de datos, devolviendo al usuario al listado actualizado. Como detalle, cabe destacar que debe hacerse una transformación del checkbox a valores numéricos para que puedan ser interpretados por la base de datos.

El elemento de menú Eliminar coche utiliza un Recycler View para mostrar un listado de coches, al igual que se hacía en la pantalla listado, con la posibilidad de eliminar el elemento seleccionado.

El comportamiento utiliza una lógica similar a la pantalla de listado con eventos onClick similares a los recogidos para acceder a la ficha completa del vehículo, siendo también necesario definir el adaptador.

 

Por último, para configurar el menú de preferencias comenzaremos creando un XML con la personalización del menú en formato PreferenceScreen y lo incluímos dentro del layout a utilizar para la actividad Ajustes.

Esta actividad Ajustes tendrá asociado un Fragment que será el encargado de mostrar el layout de preferencias.

La función asociada a la selección de preferencias, como hemos visto anteriormente, se ha definido en la activdad del listado de vehículos, donde, según el valor que tomaba el swich, se realizaba una u otra consulta a la base de datos.

Puedes ver el resultado de la ejecución en este video.

¡Espero que te haya gustado este proyecto!