Presentación de PowerPoint

Anuncio
Análisis y diseño de software
dit
UPM
ejercicios 7-8
José A. Mañas
7.5.2016
temas
• aplicación android
– recoge una serie de palabras clave del usuario
– descarga un rss feed
(resúmenes de noticias)
– filtra las noticias que incluyen las palabras
– presenta las noticias filtradas
– permite navegar al periódico
• http://www.dit.upm.es/~pepe/doc/adsw/ejercicio7/ej7.apk
ADSW
2
activities
• MainActivity
ADSW
• RssListActivity
3
arquitectura
AsynchTask task
task.execute()
task
MainActivity
RssFeedDownloader
startActivity()
RssFeedParser
FilteredRssFeed
List<RssItem>
ADSW
RssListActivity
getEntries()
startActivity()
browser
4
main activity layout
<...Layout
// contenedor
<EditText
// palabras filtro de noticias
<Spinner
// servidor de noticias
<Button
// va al servidor a descargar noticias
<ProgressBar
// mientras se están descargando
</...Layout>
ADSW
5
MainActivity
• Cuando se hace clic en el botón
lanza una asynctask
private class RssRetrieveTask
extends AsyncTask<String, Void, Void> {
@Override
protected void onPreExecute() { }
// strings[0]  site url
// strings[1]  palabras filtro
protected Void doInBackground(String... strings) { }
@Override
protected void onPostExecute(Void v) { }
ADSW
6
AsyncTask
• void onPreExecute()
– se inicializa la barra de progreso
• Void doInBackground(String ... s)
– recibe una url en s[0]
• la usa para descargar los ítems con RssFeedDownloader
– recibe una serie de palabras filtro en s[1]
• las usa para resetear FilteredRssFeed
• mete en FilteredRssFeed los ítems descargados con
RssFeedDownloader
• void onPostExecute(Void v)
– termina la barra de progreso
– lanza RssListActivity
ADSW
7
RssListActivity
• layout
– usa una ListView para presentar todos los ítems
• usa un ArrayAdapter
– para adaptar la lista de FilteredRssFeed a ña ListView
– usa un layout para presentar cada ítem
por ejemplo: <LinearLayout
<TextView
android:id="@+id/rssItemTitle“
<TextView
android:id="@+id/rssItemDate"
<TextView
android:id="@+id/rssItemDescription"
</LinearLayout>
ADSW
8
RssListActivity
• Cuando se hace clic en una noticia,
se salta al navegador
private class OnItemClickListenerListViewItem
implements android.widget.AdapterView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
RssItem item = ...
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(item.link));
startActivity(browserIntent);
}
}
ADSW
9
clases java & recursos
• parte del enunciado
–
–
–
–
class RssItem
class FilteredRssFeed
class RssFeedDownloader
class RssFeedParser
• a desarrollar como ejercicio
– class MainActivity
– class RssListActivity
– class RssArrayAdapter
ADSW
& layout/activity_main.xml
& layout/activity_rss_list.xml
& layout/rss_item_row.xml
10
entrega
• package es.upm.dit.adsw.ej7
• todas las clases java que haya hecho
– directorio java/...
• todos los recursos adicionales
– directorio res/...
ADSW
11
Descargar