title: Android Head First "NASA daily image App"
body: <p>I've been following the book "Head First Android", and I'm stuck in Chapter 3.</p>
  
  <p>This little app is a really basic layout; 3 text views and 1 image view, that should update after reading from NASA RSS daily image.</p>
  
  <p>I've completed the chapter but now when running the app only shows a Blank screen.</p>
  
  <p>Any help appreciated. This is the code:</p>
  
  <pre><code>public class MainActivity extends Activity {
  
   @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          IotdHandler handler = new IotdHandler ();
          handler.processFeed();
          resetDisplay (handler.getTitle(), handler.getDate(), handler.getImage(), handler.getDescription());
      }
  
      public class IotdHandler extends DefaultHandler {
          private String url = "http://www.nasa.gov/rss/dyn/image_of_the_day.rss";
          private boolean inUrl = false;
          private boolean inTitle = false;
          private boolean inDescription = false;
          private boolean inItem = false;
          private boolean inDate = false;
          private Bitmap image = null;
          private String title = null;
          private StringBuffer description = new StringBuffer();
          private String date = null;
  
  
          public void processFeed() {
              try {
              SAXParserFactory factory =
              SAXParserFactory.newInstance();
              SAXParser parser = factory.newSAXParser();
              XMLReader reader = parser.getXMLReader();
              reader.setContentHandler(this);
              InputStream inputStream = new URL(url).openStream();
              reader.parse(new InputSource(inputStream));
              } catch (Exception e) {  }
          }
  
              private Bitmap getBitmap(String url) {
                  try {
                  HttpURLConnection connection = (HttpURLConnection)new URL(url).openConnection();
                  connection.setDoInput(true);
                  connection.connect();
                  InputStream input = connection.getInputStream();
                  Bitmap bilde = BitmapFactory.decodeStream(input);
                  input.close();
                  return bilde;
                  } catch (IOException ioe) { return null; }
                  }
  
              public void startElement(String url, String localName, String qName, Attributes attributes) throws SAXException {
                      if (localName.endsWith(".jpg")) { inUrl = true; }
                      else { inUrl = false; }
  
                      if (localName.startsWith("item")) { inItem = true; }
                      else if (inItem) {
  
                          if (localName.equals("title")) { inTitle = true; }
                          else { inTitle = false; }
  
                          if (localName.equals("description")) { inDescription = true; }
                          else { inDescription = false; }
  
                          if (localName.equals("pubDate")) { inDate = true; }
                          else { inDate = false; }
                          }
                      }
  
  
              public void characters(char ch[], int start, int length) { String chars = new String(ch).substring(start, start + length);
                  if (inUrl &amp;&amp; url == null) { image = getBitmap(chars); }
                  if (inTitle &amp;&amp; title == null) { title = chars; }
                  if (inDescription) { description.append(chars); }
                  if (inDate &amp;&amp; date == null) { date = chars; }
           }
  
          public Bitmap getImage() { return image; }
          public String getTitle() { return title; }
          public StringBuffer getDescription() { return description; }
          public String getDate() { return date; }
  }
  
      private void resetDisplay (String title, String date, Bitmap image, StringBuffer description) {
  
          TextView titleView = (TextView) findViewById (R.id.imageTitle);
          titleView.setText(title);
  
          TextView dateView = (TextView) findViewById(R.id.imageDate);
          dateView.setText(date);
  
          ImageView imageView = (ImageView) findViewById (R.id.imageDisplay);
          imageView.setImageBitmap(image);
  
          TextView descriptionView = (TextView) findViewById (R.id.imageDescription);
          descriptionView.setText(description);
      }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
     // Inflate the menu; this adds items to the action bar if it is present.
     getMenuInflater().inflate(R.menu.main, menu);
     return true;
  }
  }
  </code></pre>