Your SlideShare is downloading. ×
Tema 5 ejemplo_lista_compra
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Tema 5 ejemplo_lista_compra

1,679
views

Published on

Ejemplo Lista de la compra

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
1,679
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
43
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. LeyendaTeoríaEjercicio práctico en el ordenadorAmpliación de conocimientosLectura / Vídeo / PodcastPráctica libre / Experimentación Ejemplo Lista de la Compra 2
  • 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. ¿Qué vamos a hacer? Ejemplo Lista de la Compra 4
  • 5. Arquitectura Ejemplo Lista de la Compra 5
  • 6. Producto ...Genero (y reviso getters/setters,constructor, equals(), toString() Ejemplo Lista de la Compra 6
  • 7. Repaso Patrón de Diseño Singleton● Una clase que tiene sólo un objeto Ejemplo Lista de la Compra 7
  • 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. 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. ListaSingleton Ejemplo Lista de la Compra 10
  • 11. DetalleProductoActivityProgramo clases privadas MiButtonSaveOnClickListener y MiButtonCancelOnClickListener que implementan View.OnClickLiistener, ahora mismo no hace nada. Ejemplo Lista de la Compra 11
  • 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. 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. ListaCompraActivity Conmuto a otra actividadhttp://developer.android.com/reference/android/widget/ArrayAdapter.html Ejemplo Lista de la Compra 14
  • 15. Ejecutamos... Ejemplo Lista de la Compra 15
  • 16. Rellenamos... Ejemplo Lista de la Compra 16
  • 17. Probamos... Ejemplo Lista de la Compra 17
  • 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. DetalleProductoActivity (I) Ejemplo Lista de la Compra 19
  • 20. DetalleProductoActivity (II) Ejemplo Lista de la Compra 20
  • 21. Pruebo... ¡No cambia :(! Ejemplo Lista de la Compra 21
  • 22. RepasoCiclo vida de Actividad Ejemplo Lista de la Compra 22 http://developer.android.com/reference/android/app/Activity.html
  • 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. ListaCompraActivity Ejemplo Lista de la Compra 24
  • 25. Pruebo... ¡Cambia :)! Ejemplo Lista de la Compra 25
  • 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. 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. 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. 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. 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. AsyncTask● Puedo saber si está en funcionamiento con el método getStatus() Ejemplo Lista de la Compra 31
  • 32. ListCompraActivity… métodos Ejemplo Lista de la Compra 32
  • 33. ActualizaCompraTask Ejemplo Lista de la Compra 33
  • 34. ActualizaCompraTask (I) Ejemplo Lista de la Compra 34
  • 35. ActualizaCompraTask (II) Ejemplo Lista de la Compra 35
  • 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