RSS ?

RSS merupakan singkatan yang merujuk kepada beberapa protokol :
– Really Simple Syndication ( RSS 2.0 )
– RDF Site Summary ( 0.9 dan 1.0 )
– Rich Text Summary ( 0.91 )

RSS adalah salah satu bentuk pemakaian web services dalam SOA, karena biasanya RSS merupakan versi simple dari isi website dengan format XML, biasanya digunakan oleh sebuat website/blog untuk service. kemudian apa itu SOA dan Web Services.. ale amang, silakan ikuti kuliah SOA atau download materi yang berisi tentang SOA,, hi.hi.hi.

RSS Reader itu apa maksudnya ya…. sesuatu yang bisa baca rss gitulah.🙂

Tutorial kali ini kita akan coba buat androidrss reader untuk website http://www.muslim.or.id
rss untuk website ini adalah dengan memanggil alamat “http://muslim.or.id/?feed=rss2” kalau dibuka di browser komputer akan seperti berikut ini :

untuk konsep dasar, kita membutuhkan cukup 3 tampilan layout xml yg dibagi menjadi main.xml,details.xml dan rsslist.xml

main.xml
fungsinya untuk menampilkan list berita/headline/feed isi website target

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" />
<ImageView 
	android:id="@+id/feedurlimage"
	android:layout_width="72dip"
	android:layout_height="72dip"
	android:layout_gravity="left"
	android:paddingLeft="6dip"
	
	/>
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/feedtitle" />
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/feeddescribtion" />
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/feedpubdate" />
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:autoLink="web"
    android:id="@+id/feedlink" />
<ListView
	android:id="@android:id/list"
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" />
<TextView
	android:id="@android:id/empty"
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:text="No Data" />
</LinearLayout>

details.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="RSS Details:-" />
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/detailstitle" />
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/detailsdescription" />
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:autoLink="web"
    android:id="@+id/detailslink" />
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/detailspubdate" />
</LinearLayout>

rsslist.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView 
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/rowtext"
	android:layout_width="fill_parent"
	android:layout_height="25px"
	android:textSize="10sp" />

Kita butuhkan file java

AndroidRssReader.java

package com.exercise.AndroidRssReader;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;



import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class AndroidRssReader extends ListActivity {

	private RSSFeed myRssFeed = null;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		try {
			URL rssUrl = new URL(
			"http://muslim.or.id/?feed=rss2");
					
			SAXParserFactory mySAXParserFactory = SAXParserFactory
					.newInstance();
			SAXParser mySAXParser = mySAXParserFactory.newSAXParser();
			XMLReader myXMLReader = mySAXParser.getXMLReader();
			RSSHandler myRSSHandler = new RSSHandler();
			myXMLReader.setContentHandler(myRSSHandler);
			InputSource myInputSource = new InputSource(rssUrl.openStream());
			myXMLReader.parse(myInputSource);

			myRssFeed = myRSSHandler.getFeed();

		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		if (myRssFeed != null) {
			TextView feedTitle = (TextView) findViewById(R.id.feedtitle);
			TextView feedDescribtion = (TextView) findViewById(R.id.feeddescribtion);
			TextView feedPubdate = (TextView) findViewById(R.id.feedpubdate);
			TextView feedLink = (TextView) findViewById(R.id.feedlink);
			ImageView feedurlimage = (ImageView) findViewById (R.id.feedurlimage);
			
			feedTitle.setText(myRssFeed.getTitle());
			feedDescribtion.setText(myRssFeed.getDescription());
			feedPubdate.setText(myRssFeed.getPubdate());
			feedLink.setText(myRssFeed.getLink());
			//feedurlimage.setImageBitmap(bm)(myRssFeed.geturlimage());

			ArrayAdapter<RSSItem> adapter = new ArrayAdapter<RSSItem>(this,
					android.R.layout.simple_list_item_1, myRssFeed.getList());
			setListAdapter(adapter);
		}
	}
	@Override
		protected void onListItemClick(ListView l,View v, int position,long id){
			Intent intent = new Intent (this,ShowDetails.class);
			Bundle bundle = new Bundle();
			bundle.putString("keyTitle", myRssFeed.getItem(position).getTitle());
			bundle.putString("keyDescription", myRssFeed.getItem(position).getDescription());
			bundle.putString("keyPubdate", myRssFeed.getItem(position).getPubdate());
			bundle.putString("keyLink", myRssFeed.getItem(position).getLink());
			bundle.putString("keyurlimage", myRssFeed.getItem(position).geturlimage());
			intent.putExtras(bundle);
			startActivity(intent);
	}
}

code berikut ini

URL rssUrl = new URL(
			"http://muslim.or.id/?feed=rss2");

bisa anda ganti meload ke website menyediakan service (xml), banyak website yang menyediakannya, umumnya situs berita menyediakan service tersebut… silakan dicari service sesuai website yang anda butuhkan.

berikut adalah tampilan aplikasi dijalankan untuk contoh yang diatas

tampilan detailes untuk pilihan pertama menghasilkan gambar seperti berikut :

Silakan diobrak-abrik supaya bisa seperti aplikasi androidrssreader yang pernah ada,,, lakukan parsing image,dll sehingga layak untuk digunakan..

Download Source Code

Mudah2 an ada gunanya …. en slamat mencoba dan obrak-abrik…hi.hi.hi..

uxc.wilis
🙂