un lector de rss sencillo para blackberry - jorge urdaneta @jorgeu
DESCRIPTION
Un lector de RSS sencillo para Blackberry - Jorge Urdaneta @jorgeuTRANSCRIPT
5to Refresh Maracaibo20 de agosto de 2011
Jorge UrdanetaLicenciado en Computación
Un lector de RSS sencillo para Blackberry OS 5
2
Contenido
IntroducciónParser XML del RSSMuestra de elementos en pantalla
3
Introducción
Crear un lector del RSS del sitio http://refreshmaracaibo.org en smartphones Blackberry
Facilitar el acceso a las últimas noticias del BlogImpulsar el “Branding” del eventoOfrecer una aplicación de ejemplo para principiantesOfrecer una aplicación de ejemplo para principiantes
4
Parser XML del RSS
Noticias contenidas en <item> … </item>Atributos a leer
<title> acá el título </title><content:encoded> contenido </content:encoded>
SAX ParserSe procesan los tags a medida que se van leyendoIdeal para XML que vienen de conexiones lentasNo se carga el documento en memoria como DOMSe complica el procesamiento de tags en documentos
XML complejos
Dirección del RSS: http://refreshmaracaibo.com/feed/
5
Parser XML del RSS
DefaultHandler handler = new DefaultHandler() { Noticia act=null; boolean titletag=false, contenttag=false; public void startElement(String uri, String localName, String qName... { if(qName.equalsIgnoreCase("item")) act=new Noticia(); else { titletag=qName.equalsIgnoreCase("title"); contenttag=qName.equalsIgnoreCase("content:encoded"); } } public void characters(char[] ch, int start, int length) ... { if(act==null) return; if(titletag) { act.titulo=new String(ch,start,length); titletag=false; } else if(contenttag) { act.contenido=new String(ch,start,length); contenttag=false; } } public void endElement(String uri, String localName, String qName) ... { if(qName.equalsIgnoreCase("item")) agregarNoticia(act); }};
6
Muestra de elementos en pantalla
Banner con imagen del evento
Listado de títulos de noticias
Al dar click mostrar contenido
7
Muestra de elementos en pantalla
void agregarNoticia(final Noticia noticia) { UiApplication.getUiApplication().invokeLater(new Runnable() { public void run() { contenedor.add(new LabelField(noticia.titulo,Field.FOCUSABLE) { protected boolean navigationClick(int status, int time) { Screen content=new MainScreen(); BrowserField browser=new BrowserField(); browser.displayContent(noticia.contenido,""); content.add(browser); UiApplication.getUiApplication().pushScreen(content); return super.navigationClick(status, time); } }); contenedor.add( new SeparatorField( SeparatorField.LINE_HORIZONTAL)); } });}
public PantallaInicial() { EncodedImage cap= EncodedImage.getEncodedImageResource("img/banner.png"); setBanner( new BitmapField(cap.getBitmap(),BitmapField.FIELD_HCENTER)); add(contenedor); actualizarNoticias();}
8
Muestra de elementos en pantalla
9
Gracias por su atención
¿Preguntas?