RSS Reader


  1. saurabh44

    saurabh44 New Member

    I am new to android development.I tried this RSS Reader app using some blog.I couldn't figure out the errorin my code.Its showing ANR error.Please help !

    package com.example.simplerssreader;

    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.List;

    import org.xmlpull.v1.XmlPullParser;
    import org.xmlpull.v1.XmlPullParserException;
    import org.xmlpull.v1.XmlPullParserFactory;

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

    public class SimpleRSSReaderActivity extends ListActivity
    {
    List headlines=new ArrayList();
    List links=new ArrayList();



    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.simple_rssreader);

    ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, headlines);
    setListAdapter(adapter);

    new PostTask().execute("http://feeds.pcworld.com/pcworld/latestnews");
    }

    @Override

    protected void onListItemClick(ListView l, View v, int position, long id)
    {
    Uri uri = Uri.parse((links.get(position)).toString());
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
    }


    private class PostTask extends AsyncTask<String, Integer, String>
    {
    @Override
    protected void onPreExecute() {

    super.onPreExecute();
    }

    @Override
    protected String doInBackground(String... params)
    {
    String para=params[0];
    try {

    URL url = new URL(para);

    XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
    factory.setNamespaceAware(false);
    XmlPullParser xpp = factory.newPullParser();

    // We will get the XML from an input stream

    xpp.setInput(url.openStream(), "UTF_8");



    /* We will parse the XML content looking for the "<title>" tag which appears inside the "<item>" tag.

    * However, we should take in consideration that the rss feed name also is enclosed in a "<title>" tag.

    * As we know, every feed begins with these lines: "<channel><title>Feed_Name</title>...."

    * so we should skip the "<title>" tag which is a child of "<channel>" tag,

    * and take in consideration only "<title>" tag which is a child of "<item>"

    *

    * In order to achieve this, we will make use of a boolean variable.

    */

    boolean insideItem = false;



    // Returns the type of current event: START_TAG, END_TAG, etc..

    int eventType = xpp.getEventType();

    while (eventType != XmlPullParser.END_DOCUMENT) {

    if (eventType == XmlPullParser.START_TAG) {



    if (xpp.getName().equalsIgnoreCase("item")) {

    insideItem = true;

    } else if (xpp.getName().equalsIgnoreCase("title")) {

    if (insideItem)

    headlines.add(xpp.nextText()); //extract the headline

    } else if (xpp.getName().equalsIgnoreCase("link")) {

    if (insideItem)

    links.add(xpp.nextText()); //extract the link of article

    }

    }else if(eventType==XmlPullParser.END_TAG && xpp.getName().equalsIgnoreCase("item")){

    insideItem=false;

    }



    eventType = xpp.next(); //move to next element

    }



    } catch (MalformedURLException e) {

    e.printStackTrace();

    } catch (XmlPullParserException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    return "DONE !";

    }



    @Override

    protected void onProgressUpdate(Integer... values) {

    super.onProgressUpdate(values);



    }



    @Override

    protected void onPostExecute(String result) {

    super.onPostExecute(result);

    }

    }


    }

    Advertisement
    :
Loading...

Share This Page