Tema 5 ejemplo_lista_compra

2,059 views

Published on

Ejemplo Lista de la compra

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,059
On SlideShare
0
From Embeds
0
Number of Embeds
271
Actions
Shares
0
Downloads
48
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tema 5 ejemplo_lista_compra

  1. 1. Análisis y Diseño de SoftwareEjemploListaCompra Carlos A. Iglesias <cif@gsi.dit.upm.es> Departamento de Ingeniería de Sistemas Telemáticos http://moodle.dit.upm.es
  2. 2. LeyendaTeoríaEjercicio práctico en el ordenadorAmpliación de conocimientosLectura / Vídeo / PodcastPráctica libre / Experimentación Ejemplo Lista de la Compra 2
  3. 3. Objetivos● Aplicar los conceptos aprendidos en una aplicación de ejemplo: una lista de la compra● Repaso – Patrones Singleton / DAO – AsyncTask – Intenciones para pasar de una actividad a otra Ejemplo Lista de la Compra 3
  4. 4. ¿Qué vamos a hacer? Ejemplo Lista de la Compra 4
  5. 5. Arquitectura Ejemplo Lista de la Compra 5
  6. 6. Producto ...Genero (y reviso getters/setters,constructor, equals(), toString() Ejemplo Lista de la Compra 6
  7. 7. Repaso Patrón de Diseño Singleton● Una clase que tiene sólo un objeto Ejemplo Lista de la Compra 7
  8. 8. Repaso Patrón de Diseño DAO● DAO (Data Access Object)● Un DAO contiene una conexión a una base de datos y sus operaciones básicas, ocultando su implementación● En nuestro caso, StatusData sigue el patrón DAO del valor Status de Twitter Ejemplo Lista de la Compra 8
  9. 9. En nuestro problema...● Queremos tener sólo una lista... (singleton)● Pero realmente queremos un DAO, si siguiéramos con la aplicación, tendríamos una base de datos de productos● Vamos a seguir el patrón singleton, de forma que esta clase sea la responsable de devolvernos la lista, y de actualizarla Ejemplo Lista de la Compra 9
  10. 10. ListaSingleton Ejemplo Lista de la Compra 10
  11. 11. DetalleProductoActivityProgramo clases privadas MiButtonSaveOnClickListener y MiButtonCancelOnClickListener que implementan View.OnClickLiistener, ahora mismo no hace nada. Ejemplo Lista de la Compra 11
  12. 12. RepasoCrear Lista Opciones ListView para ver una lista @android:id/list → layout de Android para listas @android:id/empty → si la lista está vacía Ejemplo Lista de la Compra 12
  13. 13. RepasoCrear Lista opciones ListActivity en vez de Activity Fuente de datos Adaptador de lista, simple_list_item_1 está predefinido Listener de la selección Ejemplo Lista de la Compra 13
  14. 14. ListaCompraActivity Conmuto a otra actividadhttp://developer.android.com/reference/android/widget/ArrayAdapter.html Ejemplo Lista de la Compra 14
  15. 15. Ejecutamos... Ejemplo Lista de la Compra 15
  16. 16. Rellenamos... Ejemplo Lista de la Compra 16
  17. 17. Probamos... Ejemplo Lista de la Compra 17
  18. 18. Análisis...● Ha funcionado que desde ListaCompraActivity la intención me lleva a DetalleProductoActivity...● Tenemos ahora que procesar esa intención para rellenar los campos Ejemplo Lista de la Compra 18
  19. 19. DetalleProductoActivity (I) Ejemplo Lista de la Compra 19
  20. 20. DetalleProductoActivity (II) Ejemplo Lista de la Compra 20
  21. 21. Pruebo... ¡No cambia :(! Ejemplo Lista de la Compra 21
  22. 22. RepasoCiclo vida de Actividad Ejemplo Lista de la Compra 22 http://developer.android.com/reference/android/app/Activity.html
  23. 23. Repaso Estados de actividad● onCreate(Bundle saveInstanceState) - al crearse● onStart() - justo antes de que sea visible● onResume() - es visible y se reactiva● onPause() - otra actividad va a tomar el foco y ésta va a ser pausada● onStop() - no es visible, está parada● onDestroy() - se va a destruir Ejemplo Lista de la Compra 23
  24. 24. ListaCompraActivity Ejemplo Lista de la Compra 24
  25. 25. Pruebo... ¡Cambia :)! Ejemplo Lista de la Compra 25
  26. 26. Nueva funcionalidad ● Vamos a cargar las ofertas del día – Se conecta a varias webs y tarda en analizar las páginas HTML (lo simulamos) ● Y ordenar alfabéticamente Ejemplo Lista de la Compra 26
  27. 27. Usando AsyncTask● Usar las hebras directamente es tedioso● Android proporciona AsyncTask – Permite crear una hebra de fondo que publica en la hebra UI sin tener que programar Threads o Handlers – Definimos una tarea asíncrona que se ejecuta de fondo y publica sus resultados en la hebra UI Ejemplo Lista de la Compra 27
  28. 28. AsyncTask – Uso básico● Hebras:UI Thread (UITh) y Background Thread (BGTh, la AsyncTask)●Tipos genéricos: Params, Progress, Result● Estados principales – onPreExecute (UITh) – doInBackground (BGTh) – onProgressUpdate(UITh) – onPostExecutre(UITh)● Método auxiliar – publishProgress (BGTh) Ejemplo Lista de la Compra 28
  29. 29. AsyncTask● Una AsyncTask tiene 3 tipos genéricos● AsyncTask<Params, Progress, Result> – Params – tipo de parámetros enviados a la tarea para su ejecución – Progress – tipo de las unidades de progreso publicadas durante su ejecución – Result – resultado de la ejecución de la tarea● Si no usamos un tipo, lo ponemos Void (con V) Ejemplo Lista de la Compra 29
  30. 30. Métodos de AsyncTask ● onPreExecute(): invocado por UIth justo tras ejecutar la tarea ● doInBackground(Params) – invocado por BGTh justo tras onPreExecute ● onProgressUpdate(Progress) – invocado por UITh tras una llamada de BGTh a publishProgress(Progress) ● onPostExecute(Result) invocado por UITh justo tras terminar BGTh Ejemplo Lista de la Compra 30
  31. 31. AsyncTask● Puedo saber si está en funcionamiento con el método getStatus() Ejemplo Lista de la Compra 31
  32. 32. ListCompraActivity… métodos Ejemplo Lista de la Compra 32
  33. 33. ActualizaCompraTask Ejemplo Lista de la Compra 33
  34. 34. ActualizaCompraTask (I) Ejemplo Lista de la Compra 34
  35. 35. ActualizaCompraTask (II) Ejemplo Lista de la Compra 35
  36. 36. Análisis...● Carga varias veces los mismos productos...● Permite conmutar al detalle aunque hayamos lanzado la tarea (no es necesariamente malo) Ejemplo Lista de la Compra 36

×