:: Enseignements :: ESIPE :: E4INFO :: 2015-2016 :: Interface Graphique avec Android ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Un petit lecteur de flux de syndication Atom |
Nous voulons implanter un lecteur de flux Atom.
Ces flux se présentent sous la forme de fichiers XML qui sont téléchargés à
intervalles réguliers depuis un serveur web. Par exemple, le flux Atom du
blog Android Developers est disponible
ici.
Le format Atom est défini par la
RFC 4287.
Exercice 1 - Analyse d'un flux Atom
Dans un premier temps, il est nécessaire d'analyser le format Atom. Une
solution est d'implanter à la main un parser utilisant l'une des
bibliothèques d'analyse XML disponible dans l'API Android :
SAX,
DOM ou
XML pull. Notre choix se portera sur
XML pull. On simplifiera le code du parser en ne récupérant que
les données essentielles d'une entrée. On pourra lire
cette page
pour une rapide introduction à l'API
XML pull.
Note : Pour aller plus vite,
le code d'un analyseur qui devrait à peu près fonctionner est déjà fourni ici.
-
Implanter ensuite une activité qui récupère un flux Atom sur le web,
l'analyse avec l'analyseur, puis l'affiche dans une ListView
(qui disposera de l'Adapter nécessaire pour récupérer les titres de
chaque entrée) avec une utilisation appropriée d'une AsyncTask.
-
Tester maintenant la rotation de l'écran : idéalement, le contenu de la
liste de nouvelles ne doit pas être perdu.
Exercice 2 - Quelques améliorations
-
Faites en sorte en ajoutant un OnItemClickListener que le clic
sur un item provoque le lancement d'une activité navigateur se rendant
sur le lien de l'item. Cela peut être fait par :
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
Note : Il est possible également de lancer une activité qui ne
contiendrait qu'un WebView pour l'affichage de la page.
-
On souhaite maintenant afficher l'âge (temps écoulé depuis sa
publication) de chacun des items. Redéfinissez la méthode
getView() de l'Adapter afin de retourner une vue personnalisée
affichant à la fois l'âge et le titre de la nouvelle.
Faites en sorte que les âges soient régulièrement mis à jour.
Exercice 3 - Affichage des pages avec un fragment
Nous souhaitons maintenant pouvoir afficher directement dans l'activité le
contenu de la nouvelle sélectionnée dans la liste. Cet affichage sera
réalisé uniquement si l'appareil est en mode paysage; dans le cas
contraire, nous nous contenterons de visualiser la seule liste des
nouvelles.
-
Créez un Fragment embarquant la ListView d'affichage
de la liste des nouvelles. Afin de communiquer entre l'activité
embarquant le fragment et le fragment lui-même, il est conseillé de
définir un listener qui sera implanté par l'activité. Lorsque
le fragment sera attaché à l'activité, ce listener sera
enregistré sur le fragment. Lorsqu'un clic interviendra sur le titre
d'une nouvelle, l'appel à une méthode de ce listener sera déclenché.
-
Créez un Fragment chargé d'afficher le contenu d'une page : ce
fragment accueille une vue WebView permettant d'afficher du
contenu HTML.
-
Créez un layout XML disposant de deux containers : l'un pour accueillir
la liste des nouvelles et l'autre pour la visualisation du contenu de la
nouvelle courante avec le fragment embarquant le WebView. Au
chargement de l'activité, le layout correspondant au contexte
d'exécution est choisi automatiquement.
-
Lors du clic sur un titre de la liste, le fragment d'affichage du
contenu de la nouvelle doit être mis en place dans son container (et
remplacer le cas échéant le fragment précédent). Faites en sorte que la
touche "retour" fonctionne correctement afin de pouvoir revenir à
l'affichage de la nouvelle précédemment visualisée.
-
L'activité doit toujours continuer à fonctionner en mode portrait : un
clic sur le titre d'une nouvelle lance une nouvelle activité de
visualisation de son contenu.
© Université de Marne-la-Vallée