Creando un RSS Reader sencillo

Hola CubaCoders

Sé que llevo tiempo sin escribir, pero es que estoy enfrascado en otros proyectos que consumen gran parte de mi tiempo y como no tengo más ayuda por ahora para publicar nuevos artículos en el blog (se aceptan personas que quieran ayudar) por eso ha estado un tanto desactualizado, pero bueno hoy he hecho un hueco para traerles un tutorial bastante interesante pues vamos a ver cómo hacer una aplicación Android capaz de leer RSS para que puedan de una forma sencilla descargar las noticias de su sitio o su blog de preferencia, sin más rodeos vamos a eso.

No nos vamos a detener en muchos tecnicismos ni vamos a hacer una aplicación muy compleja, solo una que sea capaz de leer noticias usando RSS, como todos deben saber casi todos los sitios web y los blogs tienen un canal de noticias RSS que es una forma sencilla de obtener las noticias de los mismos mediante un fichero XML que genera el mismo, por tanto, nuestra aplicación lo único que hará será leer este fichero XML y sacar del mismo la información que a nosotros nos interesa.

Lo primero que haremos será crear una activity con el nombre RSSReaderActivity y en su XML lo único que haremos será poner un ListView

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”

android:layout_width=”fill_parent”

android:layout_height=”fill_parent”

android:orientation=”vertical” >

<ListView

android:id=”@+android:id/list”

android:layout_width=”fill_parent”

android:layout_height=”wrap_content” >

</ListView>

</LinearLayout>

 

Y luego la vamos a declarar e inicializar en la clase java correspondiente, hay algo importante que debemos saber y es que a partir de Android 4.0 en adelante cualquier tarea que requiera de mucho tiempo no se puede ejecutar en el hilo principal, sino que debemos usar la clase AsyncTask para la misma, por lo cual debajo de la clase RSSReaderActivity vamos a crear una clase llamada Conexión que va a extender de AsyncTask

 

public class Conexion extends AsyncTask<Void,Integer,Boolean> {

@Override
protected Boolean doInBackground(Void… params) {

headlines = new ArrayList();
links = new ArrayList();

try {

//pasamos la url del RSS
URL url = new URL(“http://cubacode.cubava.cu/feed/”);
//creamos un parseador para el XML
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
XmlPullParser xpp = factory.newPullParser();

xpp.setInput(url.openConnection().getInputStream(), “UTF_8”);
//esta variable controla si estamos dentro de la etiqueta
boolean insideItem = false;

int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
//si estamos dentro de la etiqueta
if (xpp.getName().equalsIgnoreCase(“item”)) {
insideItem = true;
}

//capturamos el titulo y lo guardamos en una lista

else if (xpp.getName().equalsIgnoreCase(“title”)) {
if (insideItem)
headlines.add(xpp.nextText());

}

//capturamos el link y lo guardamos en una lista

else if (xpp.getName().equalsIgnoreCase(“link”)) {
if (insideItem)
links.add(xpp.nextText());

}

} else if (eventType == XmlPullParser.END_TAG && xpp.getName().equalsIgnoreCase(“item”)) {
insideItem = false;
}

//nos movemos al siguiente elemento
eventType = xpp.next();

}

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return true;
}

 

Ahora nos dirigimos a la clase RSSReaderActivity y dentro del onCreate() escribimos lo siguiente:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

Uri uri = Uri.parse(links.get(position));   Intent intent = new Intent(Intent.ACTION_VIEW, uri);   startActivity(intent)

}
});

 

Lo que hacemos aquí es bastante sencillo cuando le demos clic a algún título inmediatamente se abrirá el navegador web y nos mostrará la noticia completa, claro para esto debemos declarar como variable global la lista que contiene los links de cada artículo y ya para terminar agregamos los permisos de internet a la aplicación para que pueda acceder a la dirección

<uses-permission android:name=”android.permission.INTERNET” />

 

Espero que este tutorial les haya sido de ayuda y que comiencen a desarrollar aplicaciones más trabajadas que lean contenido RSS, saludos y hasta el próximo tutorial.

Share
Soy Ingeniero en Ciencias Informáticas, me encanta programar sobre todo en C# y Android

3 thoughts on “Creando un RSS Reader sencillo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *