App Productos 3: Detalle De Productos (Master-Detail) Con SQLite

¡El día de hoy te quiero contar que la parte 3 de App Productos está al aire!

Cuando inicie esta serie de tutoriales sobre desarrollo Android sabía que iba a ser un reto súper duro, ya que las características propuestas para el proyecto completo son complejas.

Sin embargo, de caso de uso en caso de uso hemos llegado a la tercera fase donde ya puedes generar el detalle de productos.

Espero que la experiencia de lectura y práctica de este tutorial te sean tan gratas como lo fue para mí planear, diseñar, programar, escribirlo y revisarlo :)

Si eres nuev@, y te suena extraño lo que te digo, entonces lee estos artículos:

Dicho eso, veamos qué beneficios te trae este tutorial…

Las Actividades De Detalle Abundan

Tú y yo sabemos que las pantallas con descripción detallada de ítems de información son una práctica universal en las interfaces de apps Android.

Actividades de detalle en apps Android

Y es que extender el conocimiento de un usuario sobre dichas entidades de información es vital para la toma de decisiones y un manejo acertado del flujo de negocio.

¿Pero cómo lograr esto en nuestra app Android?

Si eres seguidor de App Productos o solo tienes problemas para crear detalles de entidades en Android, a lo mejor te encuentres en una de estas situaciones…

 

¿Cómo hacer para ir desde una lista a un detalle?

El problema principal aquí es la comunicación entre actividades.

La mayoría de desarrolladores iniciantes desconocen el envío de extras a través de Intents.

Este principio es básico para enviar el identificador único del ítem de una actividad de lista hacia una de detalle.

Ahora, súmale a eso el disparo de evento de click en el RecyclerView.

Cuyo comportamiento debe personalizarle manualmente, ya que este elemento es flexible y no trae un mecanismo de escucha prefabricada como ListView.

Y es allí donde el tutorial de App Productos #3 puede ayudarte a conseguir el siguiente resultado explicando cada uno de los elementos anteriores mediante el patrón Modelo-Vista-Presentador.

Esto te ayudará a generar como resultado:

 

¿Qué hacer para seleccionar un producto por código?

Obtener un producto simple a través de su ID es una tarea común en las fuentes de datos.

¿Y si tienes 3 fuentes de datos o más?

En el caso de App Productos, usamos la memoria del dispositivo como caché principal de los productos; tenemos una base de datos SQLite para persistencia local por si se cierra la app; y un servicio web REST creado con PHP que actúa como fuente de datos maestra al retornar datos desde MySQL en un servidor Ubuntu.

¿De qué forma aislar el problema de la gramática de consulta de productos?

La respuesta está en el patrón Repositorio junto al patrón especificación.

Al usar en conjunto ambas estrategias podremos filtrar, ordenar y paginar los datos con tan solo crear un objeto tipo Query que represente la misma lógica sin importar si es SQLite, un Content Provider o Retrofit.

Patrón Specification Android

¿Se te presentan dificultades usando MVP con Master-Detail?

Pensar en una solución para integrar un presentador en una actividad cuyo layout tiene dos fragmentos requiere tiempo y mucha investigación.

Si ya lo has intentado y no has podido conseguirlo sabrás de la frustración que te hablo al querer implementar una característica, librería, framework, etc. con poca documentación en tu lenguaje nativo.

Lo bueno de esta tercera parte del tutorial, es que podrás seguir una de las tantas soluciones para este problema.

Se trata de la incorporación de un controlador MVP junto a un presentador de tablets.

Este par me pareció muy interesante cuando lo leí del código en Android Architecture Blueprints de Google.

(Por si te interesa, es la branch dev‑todo‑mvp‑tablet)

Aplicando este enfoque podrás obtener este resultado:

¿Te cuesta aún comprender el uso de Content Providers?

Sobre este tema ya he hablado varias veces en artículos como:

No obstante, cuando se inicia en el desarrollo Android el concepto en sí mismo de este componente no se asimila.

Añadiéndole que nos presentan un concepto de URIs para acceder a las tablas de SQLite.

Pero como les digo a todos los lectores que me preguntan o reciben mis asesorías, este componente es tan solo un envoltorio general para proteger tus datos y compartirlos con apps a fines.

Cada vez que practicas la creación de un nuevo provider vas ganando entendimiento, y esto es lo que tendrás cuando sigas las instrucciones del tutorial.

Creando el contrato de los esquemas, diseñando las URIs, generando un manejador SQLite, y programando las operaciones:

ContentProvider de productos

¿La estas pasando mal procesando la URL desde el servicio web para obtener un ítem por su código?

Enrutar recursos en servicio web puede parecerte extraño, si no te has acostumbrado a las aplicaciones de servidor.

Aunque existen varios frameworks que te ayudan con esta tarea, sabes que los fundamentos del procesamiento de URLs son importantes.

La parte compleja, es cuando comienzas a tener varios recursos a proveer y además debes proveer permisos dependiendo de roles asociados a una autenticación.

En el servicio web REST de App Productos hemos solucionado estos inconvenientes con el archivo index.php, el cual es el punto de entrada principal para generar enrutamiento.

Cada recurso tiene su propio controlador, repositorio y fuente de datos asociada.

De esta manera mantenemos un orden, separamos problemas y presentamos respuestas de forma eficaz.

Esto me permitió diseñar la siguiente URL:

http://host/v1/products/:code

Donde :code es el ID del producto a consultar.

Con todo y ello, el siguiente es el resultado con Postman desde el servidor virtual que contratamos en la parte 2:

Comienza A Leer El Tutorial

¿Qué te ha parecido?

Ese es a manera general, el contenido de este tutorial.

¿Te ha gustado?

Pues bien, léelo de una vez. Mira como inicia la solución de estas situaciones:

Descargar Introducción A App Productos Parte #3

Descarga El tutorial Completo

Consigue una copia de App Productos #3 y soluciona:

  • La creación de actividad de detalle de producto
  • El Uso de master-detail con MVP para productos
  • La Implementación de base de datos SQLite + Content Provider
  • El uso de patrón especificación para filtros, orden y paginado
  • El incremento de tu servicio web para obtención de productos por ID
  • La inclusión dela arquitectura CLEAN en Android
  • +Listar productos (Parte I)
  • +Login  (Parte II)

 Preguntas Frecuentes

¿Qué viene en el paquete del tutorial?

Vienen las partes una, dos y tres de App Productos. Cada una trae consigo un tutorial en PDF para seguir los pasos de implementación, el código del proyecto funcional en Android Studio, el código del servicio web en PHP y los esquemas SQL para implementar la base de datos.

¿Qué debo hacer al pagar?

Simplemente me escribes un correo a productos@hermosaprogramacion.com con la referencia del pago y yo te reenvío el tutorial una vez lo haya comprobado (esto puede tardar entre 1 minuto o 24 horas según mi disponibilidad)

Compré la parte 2, ¿Debo pagar todo el valor?

Absolutamente no. Si has adquirido la parte uno o la dos, tendrás el respectivo descuento según el valor total. En el caso de haber comprado la primera parte, obtener App Productos #3 tiene un precio de $30 USD. Si compraste la 2, entonces solo será de $15USD. Tan solo envíame un correo a productos@hermosaprogramacion.com indicándome tu interés por el tutorial y especifícame que compraste una parte anteriormente.

¡Bien!

Me alegra estar avanzando en este proyecto :)

Muchos de mis lectores me han expresado los grandes beneficios que han tenido siguiendo estos tutoriales premium.

Y de seguro App Productos #3 no será la excepción.

Espero lo disfrutes y te ayude en tu proyecto, ya sea una tesis, un emprendimiento, tu trabajo como desarrollador, un hobby o labor.

 

¡Saludos!,
James

PD: ¿Me ayudas a difundir App Productos #3?

Solo con tu apoyo podré hacer que este tutorial llegue a varios developers que deseen fortalecer sus conocimientos.