code help

Put your problem here if it does not fit any of the other categories.

code help

Postby euromaster » Mon Jun 16, 2008 11:14 pm

I'm Having a Few Issues with my code. It always returns an null exception. i've proberly done something with obviuos but i can't seem to find the bug.

Heres the script:
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.Youtube;
  2.  
  3.  
  4.  
  5. import android.app.ListActivity;
  6.  
  7. import android.graphics.drawable.GradientDrawable;
  8.  
  9. import android.graphics.drawable.GradientDrawable.Orientation;
  10.  
  11. import android.graphics.Color;
  12.  
  13. import android.os.Bundle;
  14.  
  15. import android.widget.SimpleAdapter;
  16.  
  17.  
  18.  
  19. import java.io.BufferedReader;
  20.  
  21. import java.io.InputStreamReader;
  22.  
  23. import java.net.URL;
  24.  
  25. import java.net.URLConnection;
  26.  
  27. import java.util.ArrayList;
  28.  
  29. import java.util.List;
  30.  
  31.  
  32.  
  33. import javax.xml.parsers.DocumentBuilderFactory;
  34.  
  35. import javax.xml.parsers.DocumentBuilder;
  36.  
  37.  
  38.  
  39. import org.w3c.dom.*;
  40.  
  41. import org.xml.sax.SAXException;
  42.  
  43. import org.xml.sax.SAXParseException;
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53. public class Youtube extends ListActivity {
  54.  
  55.         public void onCreate(Bundle icicle){
  56.  
  57.         super.onCreate(icicle);
  58.  
  59.         setContentView(R.layout.video_list);
  60.  
  61.         GradientDrawable grad = new GradientDrawable(
  62.  
  63.                       Orientation.TOP_BOTTOM,
  64.  
  65.                       new int[] {Color.GRAY, Color.WHITE}
  66.  
  67.                     );
  68.  
  69.  
  70.  
  71.         this.getWindow().setBackgroundDrawable(grad);
  72.  
  73.         String xml = getXml("http://youtube.com/rss/global/recently_featured.rss");
  74.  
  75.         try {
  76.  
  77.  
  78.  
  79.             DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
  80.  
  81.             DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
  82.  
  83.             Document doc = docBuilder.parse (xml);
  84.  
  85.             doc.getDocumentElement().normalize();
  86.  
  87.             NodeList node = doc.getElementsByTagName("rss");
  88.  
  89.             for (int s = 0; s < node.getLength(); s++) {
  90.  
  91.                 Node fstNode = node.item(s);
  92.  
  93.                 if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
  94.  
  95.                         Element fstElmnt = (Element) fstNode;
  96.  
  97.                       NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("channel");
  98.  
  99.                       Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
  100.  
  101.                       NodeList fstNm = fstNmElmnt.getChildNodes();
  102.  
  103.  
  104.  
  105.                 }
  106.  
  107.             }
  108.  
  109.             List<String> items = new ArrayList<String>();
  110.  
  111.             items.add("a riga 1");
  112.  
  113.             items.add("a riga 2");
  114.  
  115.             items.add("b riga 3");
  116.  
  117.             items.add("a riga 4");
  118.  
  119.             SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.video_row, null, null);
  120.  
  121.         }catch (SAXParseException err) {
  122.  
  123.         }catch (SAXException e) {
  124.  
  125.         }catch (Throwable t) {}
  126.  
  127.         }
  128.  
  129.         public String getXml(String strURL){
  130.  
  131.                 StringBuffer xml = null;
  132.  
  133.                 URL url  = null;
  134.  
  135.                 URLConnection conn = null;
  136.  
  137.                 BufferedReader in = null;
  138.  
  139.                 try{
  140.  
  141.                     url = new URL(strURL);
  142.  
  143.                     conn = url.openConnection();
  144.  
  145.                     in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  146.  
  147.                     String line = null;
  148.  
  149.                     xml = new StringBuffer();
  150.  
  151.                     while ((line = in.readLine()) != null){
  152.  
  153.                         xml.append(line);
  154.  
  155.                     }
  156.  
  157.                 }
  158.  
  159.                 catch (Exception e){ }
  160.  
  161.                 finally {
  162.  
  163.                 }
  164.  
  165.                  
  166.  
  167.                 return xml.toString();
  168.  
  169.         }
  170.  
  171. }
Parsed in 0.043 seconds, using GeSHi 1.0.8.4
euromaster
Junior Developer
Junior Developer
 
Posts: 14
Joined: Mon Jun 16, 2008 10:37 pm

Top

Postby Jesmiatka » Tue Jun 17, 2008 9:36 am

It might help to check what the line number is where the exception is thrown ;-)
Jesmiatka
Senior Developer
Senior Developer
 
Posts: 164
Joined: Mon Feb 04, 2008 3:37 pm
Location: Netherlands

Postby Danuubz » Tue Jun 17, 2008 11:58 am

It works on my emulator :wink:

However, I have taken out
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. setContentView(R.layout.video_list);
  3.  
  4.  
Parsed in 0.030 seconds, using GeSHi 1.0.8.4

and
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. R.layout.video_row
  3.  
  4.  
Parsed in 0.034 seconds, using GeSHi 1.0.8.4

from the code. You can see the gray-white gradient drawable on the screen.

So I think, the problem is in one of the layout files.
User avatar
Danuubz
Experienced Developer
Experienced Developer
 
Posts: 78
Joined: Wed Dec 19, 2007 10:44 pm
Location: Germany

Postby euromaster » Tue Jun 17, 2008 3:43 pm

I've worked out the error, i'm not paring enough parametres to the adapter.

how do you pass an array to an adapter as the data?
euromaster
Junior Developer
Junior Developer
 
Posts: 14
Joined: Mon Jun 16, 2008 10:37 pm

Postby euromaster » Thu Jun 19, 2008 12:15 am

theirs a problem with the parsing the xml but i don't know what:
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.Youtube;
  2.  
  3.  
  4.  
  5. import android.app.ListActivity;
  6.  
  7. import android.graphics.drawable.GradientDrawable;
  8.  
  9. import android.graphics.drawable.GradientDrawable.Orientation;
  10.  
  11. import android.graphics.Color;
  12.  
  13. import android.os.Bundle;
  14.  
  15. import android.widget.ArrayAdapter;
  16.  
  17.  
  18.  
  19. import java.io.BufferedReader;
  20.  
  21. import java.io.InputStreamReader;
  22.  
  23. import java.net.URL;
  24.  
  25. import java.net.URLConnection;
  26.  
  27.  
  28.  
  29. import javax.xml.parsers.DocumentBuilderFactory;
  30.  
  31. import javax.xml.parsers.DocumentBuilder;
  32.  
  33.  
  34.  
  35. import org.w3c.dom.*;
  36.  
  37. import org.xml.sax.SAXException;
  38.  
  39. import org.xml.sax.SAXParseException;
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51. public class Youtube extends ListActivity {
  52.  
  53.         public void onCreate(Bundle icicle){
  54.  
  55.         super.onCreate(icicle);
  56.  
  57.         setContentView(R.layout.video_list);
  58.  
  59.         GradientDrawable grad = new GradientDrawable(
  60.  
  61.                       Orientation.TOP_BOTTOM,
  62.  
  63.                       new int[] {Color.GRAY, Color.WHITE}
  64.  
  65.                     );
  66.  
  67.         try {
  68.  
  69.                 String xml = getXml("http://youtube.com/rss/global/recently_featured.rss");
  70.  
  71.         this.getWindow().setBackgroundDrawable(grad);
  72.  
  73.             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  74.  
  75.             DocumentBuilder db = dbf.newDocumentBuilder();
  76.  
  77.                        Document doc = db.parse(xml);
  78.  
  79.                 String[] items = {"hi"};
  80.  
  81.             setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, items));
  82.  
  83.           } catch (Exception e) {}
  84.  
  85.         }
  86.  
  87.         public String getXml(String strURL){
  88.  
  89.                 StringBuffer xml = null;
  90.  
  91.                 URL url  = null;
  92.  
  93.                 URLConnection conn = null;
  94.  
  95.                 BufferedReader in = null;
  96.  
  97.                 try{
  98.  
  99.                     url = new URL(strURL);
  100.  
  101.                     conn = url.openConnection();
  102.  
  103.                     in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  104.  
  105.                     String line = null;
  106.  
  107.                     xml = new StringBuffer();
  108.  
  109.                     while ((line = in.readLine()) != null){
  110.  
  111.                         xml.append(line);
  112.  
  113.                     }
  114.  
  115.                 }
  116.  
  117.                 catch (Exception e){ }
  118.  
  119.                 finally {
  120.  
  121.                 }
  122.  
  123.                  
  124.  
  125.                 return xml.toString();
  126.  
  127.         }
  128.  
  129. }
Parsed in 0.044 seconds, using GeSHi 1.0.8.4

videos_list.ml
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  4.  
  5.    android:layout_width="fill_parent"
  6.  
  7.    android:layout_height="wrap_content">
  8.  
  9.             <TextView
  10.  
  11.        android:layout_width="wrap_content"
  12.  
  13.        android:layout_height="wrap_content"
  14.  
  15.        android:text="Build 124"/>
  16.  
  17. <ListView android:id="@id/android:list"
  18.  
  19.        android:layout_width="fill_parent"
  20.  
  21.        android:layout_height="wrap_content"/>
  22.  
  23. <TextView android:id="@id/android:empty"
  24.  
  25.        android:layout_width="fill_parent"
  26.  
  27.        android:layout_height="wrap_content"
  28.  
  29.        android:text="@string/no_videos"/>
  30.  
  31.        
  32.  
  33. </LinearLayout>
Parsed in 0.003 seconds, using GeSHi 1.0.8.4

strings.xml
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <resources>
  4.  
  5.     <string name="app_name">Youtube</string>
  6.  
  7.     <string name="no_videos">No Videos</string>
  8.  
  9. </resources>
  10.  
  11.  
Parsed in 0.001 seconds, using GeSHi 1.0.8.4
euromaster
Junior Developer
Junior Developer
 
Posts: 14
Joined: Mon Jun 16, 2008 10:37 pm

Postby Danuubz » Thu Jun 19, 2008 10:53 am

Hello,
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. db.parse(xml)
  3.  
  4.  
Parsed in 0.035 seconds, using GeSHi 1.0.8.4

throws an IOException as you try to pass the content of the XML file as String to the parser. The String argument in DocumentBuilder.parse(String x) is however not for content but for the XML's URI. (Optionally you can pass the InputStream/File object/InputSource to the parse(...) method.)

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. Document doc;
  3.  
  4. try
  5.  
  6.                 {
  7.  
  8.                     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  9.  
  10.                     DocumentBuilder db = dbf.newDocumentBuilder();
  11.  
  12.                     doc = db.parse("http://youtube.com/rss/global/recently_featured.rss");                 
  13.  
  14.             }
  15.  
  16.                 catch (SAXException e)
  17.  
  18.                 {
  19.  
  20.                        
  21.  
  22.                 }
  23.  
  24.                 catch (IOException e)
  25.  
  26.                 {
  27.  
  28.                        
  29.  
  30.                 }
  31.  
  32.                 catch (ParserConfigurationException e)
  33.  
  34.                 {
  35.  
  36.                        
  37.  
  38.                 }
  39.  
  40.  
  41.  
  42.  
Parsed in 0.037 seconds, using GeSHi 1.0.8.4

would be enough. The getXml(String) method isn't necessary.
User avatar
Danuubz
Experienced Developer
Experienced Developer
 
Posts: 78
Joined: Wed Dec 19, 2007 10:44 pm
Location: Germany

Top

Postby euromaster » Sun Jun 22, 2008 10:14 pm

thanks a bunch:

so what i'm having trouble with now is whenever i add anything except the empty list textview and listview that i'm populating to the layout file the list stops being populated how do i get round this?

also i want to grab some images via url and add them as thumnails for each item on the list how would i go round
this?

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.Youtube;
  2.  
  3.  
  4.  
  5. import java.io.IOException;
  6.  
  7. import java.io.InputStream;
  8.  
  9. import java.net.HttpURLConnection;
  10.  
  11. import java.net.URL;
  12.  
  13. import java.net.URLConnection;
  14.  
  15.  
  16.  
  17. import javax.xml.parsers.DocumentBuilder;
  18.  
  19. import javax.xml.parsers.DocumentBuilderFactory;
  20.  
  21. import javax.xml.parsers.ParserConfigurationException;
  22.  
  23.  
  24.  
  25. import org.w3c.dom.Document;
  26.  
  27. import org.w3c.dom.Element;
  28.  
  29. import org.w3c.dom.Node;
  30.  
  31. import org.w3c.dom.NodeList;
  32.  
  33. import org.xml.sax.SAXException;
  34.  
  35.  
  36.  
  37. import android.app.Activity;
  38.  
  39. import android.graphics.Color;
  40.  
  41. import android.graphics.drawable.GradientDrawable;
  42.  
  43. import android.graphics.drawable.GradientDrawable.Orientation;
  44.  
  45. import android.os.Bundle;
  46.  
  47. import android.widget.ArrayAdapter;
  48.  
  49. import android.widget.ListView;
  50.  
  51.  
  52.  
  53. public class Youtube extends Activity {
  54.  
  55.         public void onCreate(Bundle icicle){
  56.  
  57.         super.onCreate(icicle);
  58.  
  59.  
  60.  
  61.        
  62.  
  63.         setContentView(R.layout.main);
  64.  
  65.         GradientDrawable grad = new GradientDrawable(
  66.  
  67.                 Orientation.TOP_BOTTOM,
  68.  
  69.                 new int[] {Color.GRAY, Color.WHITE}
  70.  
  71.               );
  72.  
  73.         this.getWindow().setBackgroundDrawable(grad);
  74.  
  75.         this.setTitle("Youtube - Featured Videos");
  76.  
  77.         makeVideoList("http://youtube.com/rss/global/recently_featured.rss");
  78.  
  79.         }
  80.  
  81.         public void makeVideoList(String Feed){
  82.  
  83.         Document doc;
  84.  
  85.         String[] items = null;
  86.  
  87.         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  88.  
  89.         DocumentBuilder db;
  90.  
  91.                 try {
  92.  
  93.                         URL url = new URL(Feed);
  94.  
  95.                     URLConnection URLconnection =
  96.  
  97.                            url.openConnection ( ) ;
  98.  
  99.                     HttpURLConnection httpConnection =
  100.  
  101.                         (HttpURLConnection)
  102.  
  103.                         URLconnection;
  104.  
  105.                     int responseCode =
  106.  
  107.                         httpConnection.getResponseCode ( ) ;
  108.  
  109.                     if ( responseCode == HttpURLConnection.HTTP_OK) {
  110.  
  111.                     InputStream in = httpConnection.getInputStream ( ) ;
  112.  
  113.                         db = dbf.newDocumentBuilder();
  114.  
  115.                         doc = db.parse(in);    
  116.  
  117.         doc.getDocumentElement().normalize();
  118.  
  119.         NodeList nodeLst = doc.getElementsByTagName("item");
  120.  
  121.         items = new String[nodeLst.getLength()];
  122.  
  123.         for (int s = 0; s < nodeLst.getLength(); s++) {
  124.  
  125.          Node fstNode = nodeLst.item(s);
  126.  
  127.             if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
  128.  
  129.                
  130.  
  131.                 Element fstElmnt = (Element) fstNode;
  132.  
  133.                 NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("title");
  134.  
  135.                 Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
  136.  
  137.                 NodeList fstNm = fstNmElmnt.getChildNodes();
  138.  
  139.                 items[s] = ((Node) fstNm.item(0)).getNodeValue();
  140.  
  141.             }
  142.  
  143.         }
  144.  
  145.                        }
  146.  
  147.                     ListView list = (ListView) findViewById(R.id.videolist);
  148.  
  149.             list.setAdapter(new ArrayAdapter<String>(this,R.layout.video_list_layout, items));
  150.  
  151.                 } catch (ParserConfigurationException e) {
  152.  
  153.         } catch (SAXException se) {
  154.  
  155.         } catch (IOException ioe) {
  156.  
  157.         }
  158.  
  159.         }
  160.  
  161.         }
  162.  
  163.  
Parsed in 0.049 seconds, using GeSHi 1.0.8.4

video_list_layout.xml
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <TextView android:id="@+id/text1"
  4.  
  5.    xmlns:android="http://schemas.android.com/apk/res/android"
  6.  
  7.    style="@style/video_list_text"
  8.  
  9.    android:layout_width="fill_parent"
  10.  
  11.    android:layout_height="wrap_content"
  12.  
  13.    android:textColor="@color/black"
  14.  
  15.    />
  16.  
  17.  
Parsed in 0.001 seconds, using GeSHi 1.0.8.4
euromaster
Junior Developer
Junior Developer
 
Posts: 14
Joined: Mon Jun 16, 2008 10:37 pm

Postby Danuubz » Mon Jun 23, 2008 5:30 pm

Here's a little modification using an overriden BaseAdapter :wink:
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. import android.app.Activity;
  3.  
  4. import android.os.Bundle;
  5.  
  6. import android.app.ListActivity;
  7.  
  8. import android.content.Context;
  9.  
  10. import android.graphics.Color;
  11.  
  12. import android.view.*;
  13.  
  14. import android.widget.*;
  15.  
  16.  
  17.  
  18. import java.io.IOException;
  19.  
  20. import java.io.InputStream;
  21.  
  22. import java.net.HttpURLConnection;
  23.  
  24. import java.net.URL;
  25.  
  26. import java.net.URLConnection;
  27.  
  28.  
  29.  
  30. import javax.xml.parsers.DocumentBuilder;
  31.  
  32. import javax.xml.parsers.DocumentBuilderFactory;
  33.  
  34. import javax.xml.parsers.ParserConfigurationException;
  35.  
  36.  
  37.  
  38. import org.w3c.dom.Document;
  39.  
  40. import org.w3c.dom.Element;
  41.  
  42. import org.w3c.dom.Node;
  43.  
  44. import org.w3c.dom.NodeList;
  45.  
  46. import org.xml.sax.SAXException;
  47.  
  48.  
  49.  
  50. public class MyListActivity extends ListActivity
  51.  
  52. {
  53.  
  54.     ListView view;
  55.  
  56.     MyListAdapter listAdapter;
  57.  
  58.        
  59.  
  60.     @Override
  61.  
  62.     public void onCreate(Bundle icicle)
  63.  
  64.     {
  65.  
  66.         super.onCreate(icicle);
  67.  
  68.        
  69.  
  70.         String[] str = getFromXML("http://youtube.com/rss/global/recently_featured.rss");
  71.  
  72.        
  73.  
  74.         listAdapter = new MyListAdapter(this,str);
  75.  
  76.         view = new ListView(this);
  77.  
  78.         view.setId(android.R.id.list);
  79.  
  80.         view.setBackgroundColor(Color.BLACK);
  81.  
  82.         view.setAdapter(listAdapter);
  83.  
  84.        
  85.  
  86.         setContentView(view);        
  87.  
  88.     }
  89.  
  90.    
  91.  
  92.     private String[] getFromXML(String feed)
  93.  
  94.     {
  95.  
  96.         Document doc;
  97.  
  98.         String[] items = null;
  99.  
  100.         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  101.  
  102.         DocumentBuilder db;
  103.  
  104.        
  105.  
  106.         try
  107.  
  108.         {
  109.  
  110.                
  111.  
  112.               URL url = new URL(feed);
  113.  
  114.               URLConnection URLconnection = url.openConnection ();
  115.  
  116.               HttpURLConnection httpConnection = (HttpURLConnection) URLconnection;
  117.  
  118.               int responseCode = httpConnection.getResponseCode ( ) ;
  119.  
  120.               if ( responseCode == HttpURLConnection.HTTP_OK)
  121.  
  122.               {
  123.  
  124.                   InputStream in = httpConnection.getInputStream ( ) ;
  125.  
  126.                   db = dbf.newDocumentBuilder();
  127.  
  128.                   doc = db.parse(in);    
  129.  
  130.                   doc.getDocumentElement().normalize();
  131.  
  132.                   NodeList nodeLst = doc.getElementsByTagName("item");
  133.  
  134.                   items = new String[nodeLst.getLength()];
  135.  
  136.                   for (int s = 0; s < nodeLst.getLength(); s++)
  137.  
  138.                   {
  139.  
  140.                           Node fstNode = nodeLst.item(s);
  141.  
  142.                           if (fstNode.getNodeType() == Node.ELEMENT_NODE)
  143.  
  144.                           {              
  145.  
  146.                                   Element fstElmnt = (Element) fstNode;
  147.  
  148.                                   NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("title");
  149.  
  150.                                   Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
  151.  
  152.                                   NodeList fstNm = fstNmElmnt.getChildNodes();
  153.  
  154.                                   items[s] = ((Node) fstNm.item(0)).getNodeValue();
  155.  
  156.                           }
  157.  
  158.                   }
  159.  
  160.             }            
  161.  
  162.         }
  163.  
  164.         catch (ParserConfigurationException e) {}
  165.  
  166.         catch (SAXException se) {}
  167.  
  168.         catch (IOException ioe) {}
  169.  
  170.      
  171.  
  172.      return items;
  173.  
  174.      }
  175.  
  176.    
  177.  
  178.      
  179.  
  180.    
  181.  
  182.    
  183.  
  184.     class MyListAdapter extends BaseAdapter
  185.  
  186.     {
  187.  
  188.         private String[] mDialogue;
  189.  
  190.    
  191.  
  192.         public MyListAdapter(Context context, String[] str) {
  193.  
  194.             mContext = context;
  195.  
  196.             mDialogue = str;
  197.  
  198.         }
  199.  
  200.  
  201.  
  202.         public int getCount() {
  203.  
  204.             return mTitles.length;
  205.  
  206.         }
  207.  
  208.        
  209.  
  210.         public Object getItem(int position) {
  211.  
  212.             return position;
  213.  
  214.         }
  215.  
  216.  
  217.  
  218.         public long getItemId(int position) {
  219.  
  220.             return position;
  221.  
  222.         }
  223.  
  224.  
  225.  
  226.         public View getView(int position, View convertView, ViewGroup parent) {
  227.  
  228.             MyView sv;
  229.  
  230.             if (convertView == null) {
  231.  
  232.                 sv = new MyView(mContext, mTitles[position],
  233.  
  234.                         mDialogue[position]);
  235.  
  236.             } else {
  237.  
  238.                 sv = (MyView) convertView;
  239.  
  240.                 sv.setTitle(mTitles[position]);
  241.  
  242.                 sv.setDialogue(mDialogue[position]);
  243.  
  244.             }
  245.  
  246.             return sv;
  247.  
  248.         }
  249.  
  250.  
  251.  
  252.        
  253.  
  254.         private Context mContext;
  255.  
  256.  
  257.  
  258.        
  259.  
  260.         private String[] mTitles =
  261.  
  262.         {
  263.  
  264.                 "Vid One:",  
  265.  
  266.                 "Vid Two:",
  267.  
  268.                 "Vid Three:",      
  269.  
  270.                 "Vid Four:",
  271.  
  272.                 "Vid Five:",
  273.  
  274.                 "Vid Six:",  
  275.  
  276.                 "Vid Seven:",
  277.  
  278.                 "Vid Eight:"
  279.  
  280.         };
  281.  
  282.    
  283.  
  284.     class MyView extends LinearLayout
  285.  
  286.     {
  287.  
  288.         public MyView(Context context, String title, String words)
  289.  
  290.         {
  291.  
  292.             super(context);
  293.  
  294.  
  295.  
  296.             this.setOrientation(VERTICAL);
  297.  
  298.  
  299.  
  300.             mTitle = new TextView(context);
  301.  
  302.             mTitle.setText(title);
  303.  
  304.             addView(mTitle, new LinearLayout.LayoutParams(
  305.  
  306.                     LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
  307.  
  308.  
  309.  
  310.             mDialogue = new TextView(context);
  311.  
  312.             mDialogue.setText(words);
  313.  
  314.             addView(mDialogue, new LinearLayout.LayoutParams(
  315.  
  316.                     LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
  317.  
  318.         }
  319.  
  320.  
  321.  
  322.        
  323.  
  324.         public void setTitle(String title) {
  325.  
  326.             mTitle.setText(title);
  327.  
  328.         }
  329.  
  330.  
  331.  
  332.        
  333.  
  334.         public void setDialogue(String words) {
  335.  
  336.             mDialogue.setText(words);
  337.  
  338.         }
  339.  
  340.  
  341.  
  342.         private TextView mTitle;
  343.  
  344.         private TextView mDialogue;
  345.  
  346.     }
  347.  
  348.     }
  349.  
  350. }
  351.  
  352.  
Parsed in 0.059 seconds, using GeSHi 1.0.8.4
User avatar
Danuubz
Experienced Developer
Experienced Developer
 
Posts: 78
Joined: Wed Dec 19, 2007 10:44 pm
Location: Germany

Postby Danuubz » Mon Jun 23, 2008 5:39 pm

To grab an Image via URL, you can take
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. Bitmap bmp = BitmapFactory.decodeStream(url.openStream());
  3.  
  4.  
Parsed in 0.036 seconds, using GeSHi 1.0.8.4
User avatar
Danuubz
Experienced Developer
Experienced Developer
 
Posts: 78
Joined: Wed Dec 19, 2007 10:44 pm
Location: Germany

Postby euromaster » Mon Jun 23, 2008 9:27 pm

i'm in the process in modifying your code to grab each videos thumnail but somethings wrong with it, as it returns a null exception again:

YouTubeItem.java
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.Youtube;
  2.  
  3.  
  4.  
  5. import java.io.IOException;
  6.  
  7. import java.net.MalformedURLException;
  8.  
  9. import java.net.URL;
  10.  
  11.  
  12.  
  13. import android.graphics.Bitmap;
  14.  
  15. import android.graphics.BitmapFactory;
  16.  
  17.  
  18.  
  19. public class YouTubeItem {
  20.  
  21.            public YouTubeItem(String Title, String ImageURL){
  22.  
  23.                 mTitle = Title;
  24.  
  25.                 URL url;
  26.  
  27.                         try {
  28.  
  29.                                 url = new URL(ImageURL);               
  30.  
  31.                                 mImage = BitmapFactory.decodeStream(url.openStream());
  32.  
  33.                     } catch (MalformedURLException e) {
  34.  
  35.                         } catch (IOException ie) {
  36.  
  37.                         }
  38.  
  39.             }
  40.  
  41.             public String getTitle(){
  42.  
  43.                 return mTitle;
  44.  
  45.             }
  46.  
  47.             public void setTitle(String Title){
  48.  
  49.                 mTitle = Title;
  50.  
  51.             }
  52.  
  53.             public Bitmap getImage(){
  54.  
  55.                 return mImage;
  56.  
  57.             }
  58.  
  59.             public void setImage(String ImageURL){
  60.  
  61.                         try {
  62.  
  63.                                 URL url = new URL(ImageURL);           
  64.  
  65.                                 mImage = BitmapFactory.decodeStream(url.openStream());
  66.  
  67.                     } catch (MalformedURLException e) {
  68.  
  69.                         } catch (IOException ie) {
  70.  
  71.                         }
  72.  
  73.             }
  74.  
  75.             private String mTitle;
  76.  
  77.             private Bitmap mImage;
  78.  
  79. }
  80.  
  81.  
Parsed in 0.041 seconds, using GeSHi 1.0.8.4


Youtube.java
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.Youtube;
  2.  
  3.  
  4.  
  5. import android.os.Bundle;
  6.  
  7. import android.app.ListActivity;
  8.  
  9. import android.content.Context;
  10.  
  11. import android.graphics.Bitmap;
  12.  
  13. import android.graphics.Color;
  14.  
  15. import android.graphics.drawable.Drawable;
  16.  
  17. import android.view.*;
  18.  
  19. import android.widget.*;
  20.  
  21.  
  22.  
  23. import java.io.IOException;
  24.  
  25. import java.io.InputStream;
  26.  
  27. import java.net.HttpURLConnection;
  28.  
  29. import java.net.URL;
  30.  
  31. import java.net.URLConnection;
  32.  
  33.  
  34.  
  35. import javax.xml.parsers.DocumentBuilder;
  36.  
  37. import javax.xml.parsers.DocumentBuilderFactory;
  38.  
  39. import javax.xml.parsers.ParserConfigurationException;
  40.  
  41.  
  42.  
  43. import org.w3c.dom.Document;
  44.  
  45. import org.w3c.dom.Element;
  46.  
  47. import org.w3c.dom.Node;
  48.  
  49. import org.w3c.dom.NodeList;
  50.  
  51. import org.xml.sax.SAXException;
  52.  
  53.  
  54.  
  55. public class Youtube extends ListActivity
  56.  
  57. {
  58.  
  59.     ListView view;
  60.  
  61.     MyListAdapter listAdapter;
  62.  
  63.      
  64.  
  65.     @Override
  66.  
  67.     public void onCreate(Bundle icicle)
  68.  
  69.     {
  70.  
  71.         super.onCreate(icicle);
  72.  
  73.        
  74.  
  75.         YouTubeItem[] items = getFromXML("http://youtube.com/rss/global/recently_featured.rss");
  76.  
  77.         String[] Titles = new String[items.length];
  78.  
  79.         Bitmap[] Images = new Bitmap[items.length];
  80.  
  81.         for(int s = 0;s<=items.length;s++){
  82.  
  83.          Titles[s] = items[s].getTitle();
  84.  
  85.          Images[s] = items[s].getImage();
  86.  
  87.         }
  88.  
  89.         listAdapter = new MyListAdapter(this,Titles, Images);
  90.  
  91.         view = new ListView(this);
  92.  
  93.         view.setId(android.R.id.list);
  94.  
  95.      view.setBackgroundColor(Color.BLACK);
  96.  
  97.      view.setAdapter(listAdapter);
  98.  
  99.      
  100.  
  101.      setContentView(view);        
  102.  
  103.     }
  104.  
  105.    
  106.  
  107.     private YouTubeItem[] getFromXML(String feed)
  108.  
  109.     {
  110.  
  111.      Document doc;
  112.  
  113.         YouTubeItem[] items = null;
  114.  
  115.         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  116.  
  117.         DocumentBuilder db;
  118.  
  119.        
  120.  
  121.         try
  122.  
  123.         {
  124.  
  125.          
  126.  
  127.               URL url = new URL(feed);
  128.  
  129.               URLConnection URLconnection = url.openConnection ();
  130.  
  131.               HttpURLConnection httpConnection = (HttpURLConnection) URLconnection;
  132.  
  133.               int responseCode = httpConnection.getResponseCode ( ) ;
  134.  
  135.               if ( responseCode == HttpURLConnection.HTTP_OK)
  136.  
  137.               {
  138.  
  139.                  InputStream in = httpConnection.getInputStream ( ) ;
  140.  
  141.                  db = dbf.newDocumentBuilder();
  142.  
  143.                  doc = db.parse(in);    
  144.  
  145.                  doc.getDocumentElement().normalize();
  146.  
  147.                  NodeList nodeLst = doc.getElementsByTagName("item");
  148.  
  149.                  items = new YouTubeItem[nodeLst.getLength()];
  150.  
  151.                  for (int s = 0; s < nodeLst.getLength(); s++)
  152.  
  153.                  {
  154.  
  155.                       Node fstNode = nodeLst.item(s);
  156.  
  157.                       if (fstNode.getNodeType() == Node.ELEMENT_NODE)
  158.  
  159.                       {              
  160.  
  161.                            Element fstElmnt = (Element) fstNode;
  162.  
  163.                            NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("title");
  164.  
  165.                            Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
  166.  
  167.                            NodeList fstNm = fstNmElmnt.getChildNodes();
  168.  
  169.                            items[s].setTitle(((Node) fstNm.item(0)).getNodeValue());
  170.  
  171.                            NodeList lstNmElmntLst = fstElmnt.getElementsByTagName("image");
  172.  
  173.                            Element lstNmElmnt = (Element) lstNmElmntLst.item(0);
  174.  
  175.                            NodeList lstNm = lstNmElmnt.getChildNodes();
  176.  
  177.                            items[s].setImage(((Node) lstNm.item(0)).getNodeValue());
  178.  
  179.                       }
  180.  
  181.                  }
  182.  
  183.             }            
  184.  
  185.         }
  186.  
  187.         catch (ParserConfigurationException e) {}
  188.  
  189.         catch (SAXException se) {}
  190.  
  191.         catch (IOException ioe) {}
  192.  
  193.      
  194.  
  195.      return items;
  196.  
  197.      }
  198.  
  199.    
  200.  
  201.      
  202.  
  203.    
  204.  
  205.    
  206.  
  207.     class MyListAdapter extends BaseAdapter
  208.  
  209.     {
  210.  
  211.      private String[] mDialogue;
  212.  
  213.      private Bitmap[] mIcon;
  214.  
  215.    
  216.  
  217.      public MyListAdapter(Context context, String[] str, Bitmap[] image) {
  218.  
  219.             mContext = context;
  220.  
  221.             mDialogue = str;
  222.  
  223.             mIcon = image;
  224.  
  225.         }
  226.  
  227.  
  228.  
  229.         public int getCount() {
  230.  
  231.             return mTitles.length;
  232.  
  233.         }
  234.  
  235.        
  236.  
  237.         public Object getItem(int position) {
  238.  
  239.             return position;
  240.  
  241.         }
  242.  
  243.  
  244.  
  245.         public long getItemId(int position) {
  246.  
  247.             return position;
  248.  
  249.         }
  250.  
  251.  
  252.  
  253.         public View getView(int position, View convertView, ViewGroup parent) {
  254.  
  255.             MyView sv;
  256.  
  257.             if (convertView == null) {
  258.  
  259.                 sv = new MyView(mContext, mTitles[position], mIcon[position],
  260.  
  261.                         mDialogue[position]);
  262.  
  263.             } else {
  264.  
  265.                 sv = (MyView) convertView;
  266.  
  267.                 sv.setTitle(mTitles[position]);
  268.  
  269.                 sv.setDialogue(mDialogue[position]);
  270.  
  271.             }
  272.  
  273.             return sv;
  274.  
  275.         }
  276.  
  277.  
  278.  
  279.        
  280.  
  281.         private Context mContext;
  282.  
  283.  
  284.  
  285.        
  286.  
  287.         private String[] mTitles =
  288.  
  289.         {
  290.  
  291.                 "Vid One:",  
  292.  
  293.                 "Vid Two:",
  294.  
  295.                 "Vid Three:",      
  296.  
  297.                 "Vid Four:",
  298.  
  299.                 "Vid Five:",
  300.  
  301.                 "Vid Six:",  
  302.  
  303.                 "Vid Seven:",
  304.  
  305.                 "Vid Eight:"
  306.  
  307.         };
  308.  
  309.  
  310.  
  311.     class MyView extends LinearLayout
  312.  
  313.     {
  314.  
  315.         public MyView(Context context, String title, Bitmap Image, String words)
  316.  
  317.         {
  318.  
  319.             super(context);
  320.  
  321.  
  322.  
  323.             this.setOrientation(VERTICAL);
  324.  
  325.             mIcon = new ImageView(context);
  326.  
  327.             mIcon.setImageBitmap(Image);
  328.  
  329.             addView(mIcon,  new LinearLayout.LayoutParams(
  330.  
  331.                     LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
  332.  
  333.            
  334.  
  335.             mTitle = new TextView(context);
  336.  
  337.             mTitle.setText(title);
  338.  
  339.             addView(mTitle, new LinearLayout.LayoutParams(
  340.  
  341.                     LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
  342.  
  343.  
  344.  
  345.             mDialogue = new TextView(context);
  346.  
  347.             mDialogue.setText(words);
  348.  
  349.             addView(mDialogue, new LinearLayout.LayoutParams(
  350.  
  351.                     LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
  352.  
  353.         }
  354.  
  355.  
  356.  
  357.        
  358.  
  359.         public void setTitle(String title) {
  360.  
  361.             mTitle.setText(title);
  362.  
  363.         }
  364.  
  365.  
  366.  
  367.        
  368.  
  369.         public void setDialogue(String words) {
  370.  
  371.             mDialogue.setText(words);
  372.  
  373.         }
  374.  
  375.         public void setIcon(Drawable bullet) {
  376.  
  377.             mIcon.setImageDrawable(bullet);
  378.  
  379.        }
  380.  
  381.         private TextView mTitle;
  382.  
  383.         private TextView mDialogue;
  384.  
  385.         private ImageView mIcon;
  386.  
  387.     }
  388.  
  389.     }
  390.  
  391. }
  392.  
  393.  
Parsed in 0.065 seconds, using GeSHi 1.0.8.4
euromaster
Junior Developer
Junior Developer
 
Posts: 14
Joined: Mon Jun 16, 2008 10:37 pm

Postby Danuubz » Tue Jun 24, 2008 11:51 am

The NullPointerException occurs because of

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. items = new YouTubeItem[nodeLst.getLength()];
  3.  
  4. ...
  5.  
  6. items[s].setTitle(((Node) fstNm.item(0)).getNodeValue());
  7.  
  8.  
Parsed in 0.036 seconds, using GeSHi 1.0.8.4


as you haven't called the constructor. You can fix it with:
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. items = new YouTubeItem[nodeLst.getLength()];
  3.  
  4. ...
  5.  
  6. for(int i=0; i<items.length;i++)
  7.  
  8. {
  9.  
  10.      items[i] = new YouTubeItem(null,null)
  11.  
  12. }
  13.  
  14. ...
  15.  
  16. items[s].setTitle(((Node) fstNm.item(0)).getNodeValue());
  17.  
  18.  
Parsed in 0.037 seconds, using GeSHi 1.0.8.4


There's another bug:
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. NodeList lstNmElmntLst = fstElmnt.getElementsByTagName("image");
  3.  
  4. Element lstNmElmnt = (Element) lstNmElmntLst.item(0);
  5.  
  6.  
Parsed in 0.037 seconds, using GeSHi 1.0.8.4

lstNmElmntLst.item(0) throws an IndexOutOfBoundsException as fstElmnt.getElementsByTagName("image") returns no elements. The URLs of the images are stored within the <description> tag:

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1.  
  2. <description>
  3.  
  4.                                 <![CDATA[
  5.  
  6.                                 <img src="http://s3.ytimg.com/vi/r_nK1CEo5ho/default.jpg" align="right" border="0" width="120" height="90" vspace="4" hspace="4" />
  7.  
  8.                                 <p>
  9.  
  10.                                 Most testicular cancers are found by men themselves. Also, doctors should examine the testicles during routine physical exams. Between regular checkups, if a man notices anything unusual about his testicles, he should talk with his doctor.
  11.  
  12.                                 </p>
  13.  
  14.                                 <p>
  15.  
  16.                                         Author: <a href="http://youtube.com/profile?user=checkyourselfout">checkyourselfout</a><br/>
  17.  
  18.                                         Keywords:  <a href="/results?search_query=Sean">Sean</a> <a href="/results?search_query=Kimerling">Kimerling</a> <a href="/results?search_query=carpetestes">carpetestes</a> <a href="/results?search_query=carpe">carpe</a> <a href="/results?search_query=testes">testes</a> <a href="/results?search_query=self">self</a> <a href="/results?search_query=exam">exam</a> <a href="/results?search_query=check">check</a> <a href="/results?search_query=your">your</a> <a href="/results?search_query=balls">balls</a> <a href="/results?search_query=testicles">testicles</a> <a href="/results?search_query=nuts">nuts</a> <a href="/results?search_query=examination">examination</a> <a href="/results?search_query=family">family</a> <a href="/results?search_query=jewels">jewels</a><br/>
  19.  
  20.                                         Added: December 6, 2007<br/>
  21.  
  22.                                 </p>
  23.  
  24. ]]>
  25.  
  26.                         </description>
  27.  
  28.  
  29.  
  30.  
Parsed in 0.001 seconds, using GeSHi 1.0.8.4
User avatar
Danuubz
Experienced Developer
Experienced Developer
 
Posts: 78
Joined: Wed Dec 19, 2007 10:44 pm
Location: Germany

Postby euromaster » Tue Jun 24, 2008 2:03 pm

Danuubz wrote:The NullPointerException occurs because of

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. items = new YouTubeItem[nodeLst.getLength()];
  2. ...
  3. items[s].setTitle(((Node) fstNm.item(0)).getNodeValue());
  4.  
Parsed in 0.036 seconds, using GeSHi 1.0.8.4


as you haven't called the constructor. You can fix it with:
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. items = new YouTubeItem[nodeLst.getLength()];
  2. ...
  3. for(int i=0; i<items.length;i++)
  4. {
  5.      items[i] = new YouTubeItem(null,null)
  6. }
  7. ...
  8. items[s].setTitle(((Node) fstNm.item(0)).getNodeValue());
  9.  
Parsed in 0.037 seconds, using GeSHi 1.0.8.4


There's another bug:
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. NodeList lstNmElmntLst = fstElmnt.getElementsByTagName("image");
  2. Element lstNmElmnt = (Element) lstNmElmntLst.item(0);
  3.  
Parsed in 0.036 seconds, using GeSHi 1.0.8.4

lstNmElmntLst.item(0) throws an IndexOutOfBoundsException as fstElmnt.getElementsByTagName("image") returns no elements. The URLs of the images are stored within the <description> tag:

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <description>
  2.                                 <![CDATA[
  3.                                 <img src="http://s3.ytimg.com/vi/r_nK1CEo5ho/default.jpg" align="right" border="0" width="120" height="90" vspace="4" hspace="4" />
  4.                                 <p>
  5.                                 Most testicular cancers are found by men themselves. Also, doctors should examine the testicles during routine physical exams. Between regular checkups, if a man notices anything unusual about his testicles, he should talk with his doctor.
  6.                                 </p>
  7.                                 <p>
  8.                                         Author: <a href="http://youtube.com/profile?user=checkyourselfout">checkyourselfout</a><br/>
  9.                                         Keywords:  <a href="/results?search_query=Sean">Sean</a> <a href="/results?search_query=Kimerling">Kimerling</a> <a href="/results?search_query=carpetestes">carpetestes</a> <a href="/results?search_query=carpe">carpe</a> <a href="/results?search_query=testes">testes</a> <a href="/results?search_query=self">self</a> <a href="/results?search_query=exam">exam</a> <a href="/results?search_query=check">check</a> <a href="/results?search_query=your">your</a> <a href="/results?search_query=balls">balls</a> <a href="/results?search_query=testicles">testicles</a> <a href="/results?search_query=nuts">nuts</a> <a href="/results?search_query=examination">examination</a> <a href="/results?search_query=family">family</a> <a href="/results?search_query=jewels">jewels</a><br/>
  10.                                         Added: December 6, 2007<br/>
  11.                                 </p>
  12. ]]>
  13.                         </description>
  14.  
  15.  
Parsed in 0.001 seconds, using GeSHi 1.0.8.4

thanks a bunch!
euromaster
Junior Developer
Junior Developer
 
Posts: 14
Joined: Mon Jun 16, 2008 10:37 pm

Postby euromaster » Tue Jun 24, 2008 2:57 pm

i tryed doing it but the items varible in the oncrete method returns a out of bounds exception and it shoudn't:
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.Youtube;
  2.  
  3.  
  4.  
  5. import android.os.Bundle;
  6.  
  7. import android.app.ListActivity;
  8.  
  9. import android.content.Context;
  10.  
  11. import android.graphics.Bitmap;
  12.  
  13. import android.graphics.Color;
  14.  
  15. import android.graphics.drawable.Drawable;
  16.  
  17. import android.view.*;
  18.  
  19. import android.widget.*;
  20.  
  21.  
  22.  
  23. import java.io.IOException;
  24.  
  25. import java.io.InputStream;
  26.  
  27. import java.net.HttpURLConnection;
  28.  
  29. import java.net.URL;
  30.  
  31. import java.net.URLConnection;
  32.  
  33.  
  34.  
  35. import javax.xml.parsers.DocumentBuilder;
  36.  
  37. import javax.xml.parsers.DocumentBuilderFactory;
  38.  
  39. import javax.xml.parsers.ParserConfigurationException;
  40.  
  41.  
  42.  
  43. import org.w3c.dom.Document;
  44.  
  45. import org.w3c.dom.Element;
  46.  
  47. import org.w3c.dom.Node;
  48.  
  49. import org.w3c.dom.NodeList;
  50.  
  51. import org.xml.sax.Attributes;
  52.  
  53. import org.xml.sax.SAXException;
  54.  
  55.  
  56.  
  57. public class Youtube extends ListActivity
  58.  
  59. {
  60.  
  61.     ListView view;
  62.  
  63.     MyListAdapter listAdapter;
  64.  
  65.      
  66.  
  67.     @Override
  68.  
  69.     public void onCreate(Bundle icicle)
  70.  
  71.     {
  72.  
  73.         super.onCreate(icicle);
  74.  
  75.         YouTubeItem[] items = new YouTubeItem[15];
  76.  
  77.         for(int i=0; i<items.length;i++)
  78.  
  79.         {
  80.  
  81.              items[i] = new YouTubeItem(null,null);
  82.  
  83.         }
  84.  
  85.         items = getFromXML("http://youtube.com/rss/global/recently_featured.rss");
  86.  
  87.         String[] Titles = new String[items.length];
  88.  
  89.         Bitmap[] Images = new Bitmap[items.length];
  90.  
  91.         for(int s = 0;s<=items.length;s++){
  92.  
  93.          Titles[s] = items[s].getTitle();
  94.  
  95.          Images[s] = items[s].getImage();
  96.  
  97.         }
  98.  
  99.         listAdapter = new MyListAdapter(this,Titles, Images);
  100.  
  101.         view = new ListView(this);
  102.  
  103.         view.setId(android.R.id.list);
  104.  
  105.      view.setBackgroundColor(Color.BLACK);
  106.  
  107.      view.setAdapter(listAdapter);
  108.  
  109.      
  110.  
  111.      setContentView(view);        
  112.  
  113.     }
  114.  
  115.    
  116.  
  117.     private YouTubeItem[] getFromXML(String feed)
  118.  
  119.     {
  120.  
  121.      Document doc;
  122.  
  123.         YouTubeItem[] items = null;
  124.  
  125.         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  126.  
  127.         DocumentBuilder db;
  128.  
  129.        
  130.  
  131.         try
  132.  
  133.         {
  134.  
  135.          
  136.  
  137.               URL url = new URL(feed);
  138.  
  139.               URLConnection URLconnection = url.openConnection ();
  140.  
  141.               HttpURLConnection httpConnection = (HttpURLConnection) URLconnection;
  142.  
  143.               int responseCode = httpConnection.getResponseCode ( ) ;
  144.  
  145.               if ( responseCode == HttpURLConnection.HTTP_OK)
  146.  
  147.               {
  148.  
  149.                  InputStream in = httpConnection.getInputStream ( ) ;
  150.  
  151.                  db = dbf.newDocumentBuilder();
  152.  
  153.                  doc = db.parse(in);    
  154.  
  155.                  doc.getDocumentElement().normalize();
  156.  
  157.                  NodeList nodeLst = doc.getElementsByTagName("item");
  158.  
  159.                  items = new YouTubeItem[nodeLst.getLength()];
  160.  
  161.                  for(int i=0; i<items.length;i++)
  162.  
  163.                  {
  164.  
  165.                       items[i] = new YouTubeItem(null,null);
  166.  
  167.                  }
  168.  
  169.                  for (int s = 0; s < nodeLst.getLength(); s++)
  170.  
  171.                  {
  172.  
  173.                       Node fstNode = nodeLst.item(s);
  174.  
  175.                       if (fstNode.getNodeType() == Node.ELEMENT_NODE)
  176.  
  177.                       {              
  178.  
  179.                            Element fstElmnt = (Element) fstNode;
  180.  
  181.                            NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("title");
  182.  
  183.                            Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
  184.  
  185.                            NodeList fstNm = fstNmElmnt.getChildNodes();
  186.  
  187.                            items[s].setTitle(((Node) fstNm.item(0)).getNodeValue());
  188.  
  189.                            NodeList lstNmElmntLst = fstElmnt.getElementsByTagName("img");
  190.  
  191.                            Element lstNmElmnt = (Element) lstNmElmntLst.item(0);
  192.  
  193.                            NodeList lstNm = lstNmElmnt.getChildNodes();
  194.  
  195.                            Attributes lstNmAtrs = (Attributes) lstNm.item(0).getAttributes();
  196.  
  197.                            items[s].setImage(lstNmAtrs.getValue("src"));
  198.  
  199.                       }
  200.  
  201.                  }
  202.  
  203.             }            
  204.  
  205.         }
  206.  
  207.         catch (ParserConfigurationException e) {}
  208.  
  209.         catch (SAXException se) {}
  210.  
  211.         catch (IOException ioe) {}
  212.  
  213.      
  214.  
  215.      return items;
  216.  
  217.      }
  218.  
  219.    
  220.  
  221.      
  222.  
  223.    
  224.  
  225.    
  226.  
  227.     class MyListAdapter extends BaseAdapter
  228.  
  229.     {
  230.  
  231.      private String[] mDialogue;
  232.  
  233.      private Bitmap[] mIcon;
  234.  
  235.    
  236.  
  237.      public MyListAdapter(Context context, String[] str, Bitmap[] image) {
  238.  
  239.             mContext = context;
  240.  
  241.             mDialogue = str;
  242.  
  243.             mIcon = image;
  244.  
  245.         }
  246.  
  247.  
  248.  
  249.         public int getCount() {
  250.  
  251.             return mTitles.length;
  252.  
  253.         }
  254.  
  255.        
  256.  
  257.         public Object getItem(int position) {
  258.  
  259.             return position;
  260.  
  261.         }
  262.  
  263.  
  264.  
  265.         public long getItemId(int position) {
  266.  
  267.             return position;
  268.  
  269.         }
  270.  
  271.  
  272.  
  273.         public View getView(int position, View convertView, ViewGroup parent) {
  274.  
  275.             MyView sv;
  276.  
  277.             if (convertView == null) {
  278.  
  279.                 sv = new MyView(mContext, mTitles[position], mIcon[position],
  280.  
  281.                         mDialogue[position]);
  282.  
  283.             } else {
  284.  
  285.                 sv = (MyView) convertView;
  286.  
  287.                 sv.setTitle(mTitles[position]);
  288.  
  289.                 sv.setDialogue(mDialogue[position]);
  290.  
  291.             }
  292.  
  293.             return sv;
  294.  
  295.         }
  296.  
  297.  
  298.  
  299.        
  300.  
  301.         private Context mContext;
  302.  
  303.  
  304.  
  305.        
  306.  
  307.         private String[] mTitles =
  308.  
  309.         {
  310.  
  311.                 "Vid One:",  
  312.  
  313.                 "Vid Two:",
  314.  
  315.                 "Vid Three:",      
  316.  
  317.                 "Vid Four:",
  318.  
  319.                 "Vid Five:",
  320.  
  321.                 "Vid Six:",  
  322.  
  323.                 "Vid Seven:",
  324.  
  325.                 "Vid Eight:"
  326.  
  327.         };
  328.  
  329.  
  330.  
  331.     class MyView extends LinearLayout
  332.  
  333.     {
  334.  
  335.         public MyView(Context context, String title, Bitmap Image, String words)
  336.  
  337.         {
  338.  
  339.             super(context);
  340.  
  341.  
  342.  
  343.             this.setOrientation(VERTICAL);
  344.  
  345.             mIcon = new ImageView(context);
  346.  
  347.             mIcon.setImageBitmap(Image);
  348.  
  349.             addView(mIcon,  new LinearLayout.LayoutParams(
  350.  
  351.                     LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
  352.  
  353.            
  354.  
  355.             mTitle = new TextView(context);
  356.  
  357.             mTitle.setText(title);
  358.  
  359.             addView(mTitle, new LinearLayout.LayoutParams(
  360.  
  361.                     LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
  362.  
  363.  
  364.  
  365.             mDialogue = new TextView(context);
  366.  
  367.             mDialogue.setText(words);
  368.  
  369.             addView(mDialogue, new LinearLayout.LayoutParams(
  370.  
  371.                     LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
  372.  
  373.         }
  374.  
  375.  
  376.  
  377.        
  378.  
  379.         public void setTitle(String title) {
  380.  
  381.             mTitle.setText(title);
  382.  
  383.         }
  384.  
  385.  
  386.  
  387.        
  388.  
  389.         public void setDialogue(String words) {
  390.  
  391.             mDialogue.setText(words);
  392.  
  393.         }
  394.  
  395.         public void setIcon(Drawable bullet) {
  396.  
  397.             mIcon.setImageDrawable(bullet);
  398.  
  399.        }
  400.  
  401.         private TextView mTitle;
  402.  
  403.         private TextView mDialogue;
  404.  
  405.         private ImageView mIcon;
  406.  
  407.     }
  408.  
  409.     }
  410.  
  411. }
Parsed in 0.067 seconds, using GeSHi 1.0.8.4
euromaster
Junior Developer
Junior Developer
 
Posts: 14
Joined: Mon Jun 16, 2008 10:37 pm

Postby Danuubz » Tue Jun 24, 2008 3:45 pm

Hmm, it is still the part with
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. NodeList lstNmElmntLst = fstElmnt.getElementsByTagName("img");
  3.  
  4.  
Parsed in 0.036 seconds, using GeSHi 1.0.8.4

and
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. Element lstNmElmnt = (Element) lstNmElmntLst.item(0);
  3.  
  4. NodeList lstNm = lstNmElmnt.getChildNodes();
  5.  
  6.  Attributes lstNmAtrs = (Attributes) lstNm.item(0).getAttributes();
  7.  
  8.  
Parsed in 0.037 seconds, using GeSHi 1.0.8.4

which throws the IndexOutOfBoundsException. I think there's a problem with receiving the element with the image source by the XML parser (I've no solution for that except of writing own algorhitms that search for "img src" )...

This code shows that 'lstNmElmntLst' doesn't receive anything:
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. import android.os.Bundle;
  3.  
  4. import android.app.*;
  5.  
  6. import android.content.Context;
  7.  
  8. import android.graphics.Bitmap;
  9.  
  10. import android.graphics.Color;
  11.  
  12. import android.graphics.drawable.Drawable;
  13.  
  14. import android.view.*;
  15.  
  16. import android.widget.*;
  17.  
  18. import android.util.*;
  19.  
  20.  
  21.  
  22. import java.io.*;
  23.  
  24. import java.net.HttpURLConnection;
  25.  
  26. import java.net.URL;
  27.  
  28. import java.net.URLConnection;
  29.  
  30.  
  31.  
  32. import javax.xml.parsers.DocumentBuilder;
  33.  
  34. import javax.xml.parsers.DocumentBuilderFactory;
  35.  
  36. import javax.xml.parsers.ParserConfigurationException;
  37.  
  38.  
  39.  
  40. import org.w3c.dom.Document;
  41.  
  42. import org.w3c.dom.Element;
  43.  
  44. import org.w3c.dom.Node;
  45.  
  46. import org.w3c.dom.NodeList;
  47.  
  48. import org.xml.sax.SAXException;
  49.  
  50. import org.xml.sax.Attributes;
  51.  
  52.  
  53.  
  54. //public class MListActivity extends ListActivity
  55.  
  56. public class MListActivity extends Activity
  57.  
  58. {
  59.  
  60.     ListView view;
  61.  
  62.     MyListAdapter listAdapter;
  63.  
  64.     private TextView checkView;
  65.  
  66.      
  67.  
  68.     @Override
  69.  
  70.     public void onCreate(Bundle icicle)
  71.  
  72.     {
  73.  
  74.         super.onCreate(icicle);
  75.  
  76.                
  77.  
  78.         checkView = new TextView(this);
  79.  
  80.         checkView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT));
  81.  
  82.         checkView.setBackgroundColor(Color.WHITE);
  83.  
  84.         checkView.setTextColor(Color.BLACK);
  85.  
  86.         checkView.setId(android.R.id.list);
  87.  
  88.         setContentView(checkView);
  89.  
  90.    
  91.  
  92.        
  93.  
  94.         YouTubeItem[] items = getFromXML("http://youtube.com/rss/global/recently_featured.rss");
  95.  
  96.         /*
  97.  
  98.         String[] Titles = new String[items.length];
  99.  
  100.         Bitmap[] Images = new Bitmap[items.length];
  101.  
  102.         for(int s = 0;s<=items.length;s++){
  103.  
  104.          Titles[s] = items[s].getTitle();
  105.  
  106.          Images[s] = items[s].getImage();
  107.  
  108.         }
  109.  
  110.         listAdapter = new MyListAdapter(this,Titles, Images);
  111.  
  112.         view = new ListView(this);
  113.  
  114.         view.setId(android.R.id.list);
  115.  
  116.         view.setBackgroundColor(Color.BLACK);
  117.  
  118.         view.setAdapter(listAdapter);
  119.  
  120.      
  121.  
  122.         setContentView(view);
  123.  
  124.         */
  125.  
  126.     }
  127.  
  128.    
  129.  
  130.     private YouTubeItem[] getFromXML(String feed)
  131.  
  132.     {
  133.  
  134.      Document doc;
  135.  
  136.         YouTubeItem[] items = null;
  137.  
  138.         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  139.  
  140.         DocumentBuilder db;
  141.  
  142.        
  143.  
  144.         try
  145.  
  146.         {
  147.  
  148.          
  149.  
  150.               URL url = new URL(feed);
  151.  
  152.               URLConnection URLconnection = url.openConnection ();
  153.  
  154.               HttpURLConnection httpConnection = (HttpURLConnection) URLconnection;
  155.  
  156.               int responseCode = httpConnection.getResponseCode ( ) ;
  157.  
  158.               if ( responseCode == HttpURLConnection.HTTP_OK)
  159.  
  160.               {
  161.  
  162.                  InputStream in = httpConnection.getInputStream ( ) ;
  163.  
  164.                  db = dbf.newDocumentBuilder();
  165.  
  166.                  doc = db.parse(in);    
  167.  
  168.                  doc.getDocumentElement().normalize();
  169.  
  170.                  NodeList nodeLst = doc.getElementsByTagName("item");
  171.  
  172.                  items = new YouTubeItem[nodeLst.getLength()];
  173.  
  174.                  for(int i=0; i<items.length;i++)
  175.  
  176.                  {
  177.  
  178.                       items[i] = new YouTubeItem();
  179.  
  180.                  }
  181.  
  182.                  for (int s = 0; s < nodeLst.getLength(); s++)
  183.  
  184.                  {
  185.  
  186.                       Node fstNode = nodeLst.item(s);
  187.  
  188.                       if (fstNode.getNodeType() == Node.ELEMENT_NODE)
  189.  
  190.                       {              
  191.  
  192.                            Element fstElmnt = (Element) fstNode;
  193.  
  194.                            NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("title");
  195.  
  196.                            Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
  197.  
  198.                            NodeList fstNm = fstNmElmnt.getChildNodes();
  199.  
  200.                            items[s].setTitle(((Node) fstNm.item(0)).getNodeValue());
  201.  
  202.                            NodeList lstNmElmntLst = fstElmnt.getElementsByTagName("img");
  203.  
  204.                            String l = "" + lstNmElmntLst.getLength();
  205.  
  206.                            checkView.setText(l);
  207.  
  208.                            /*
  209.  
  210.                            Element lstNmElmnt = (Element) lstNmElmntLst.item(0);
  211.  
  212.                            NodeList lstNm = lstNmElmnt.getChildNodes();
  213.  
  214.                            Attributes lstNmAtrs = (Attributes) lstNm.item(0).getAttributes();
  215.  
  216.                            items[s].setImage(lstNmAtrs.getValue("src"));
  217.  
  218.                            */
  219.  
  220.                       }
  221.  
  222.                  }
  223.  
  224.             }            
  225.  
  226.         }
  227.  
  228.         catch (ParserConfigurationException e) {}
  229.  
  230.         catch (SAXException se) {}
  231.  
  232.         catch (IOException ioe) {}
  233.  
  234.      items=null;
  235.  
  236.      return items;
  237.  
  238.      }  
  239.  
  240.    
  241.  
  242.     class MyListAdapter extends BaseAdapter
  243.  
  244.     {
  245.  
  246.      private String[] mDialogue;
  247.  
  248.      private Bitmap[] mIcon;
  249.  
  250.    
  251.  
  252.      public MyListAdapter(Context context, String[] str, Bitmap[] image) {
  253.  
  254.             mContext = context;
  255.  
  256.             mDialogue = str;
  257.  
  258.             mIcon = image;
  259.  
  260.         }
  261.  
  262.  
  263.  
  264.         public int getCount() {
  265.  
  266.             return mTitles.length;
  267.  
  268.         }
  269.  
  270.        
  271.  
  272.         public Object getItem(int position) {
  273.  
  274.             return position;
  275.  
  276.         }
  277.  
  278.  
  279.  
  280.         public long getItemId(int position) {
  281.  
  282.             return position;
  283.  
  284.         }
  285.  
  286.  
  287.  
  288.         public View getView(int position, View convertView, ViewGroup parent) {
  289.  
  290.             MyView sv;
  291.  
  292.             if (convertView == null) {
  293.  
  294.                 sv = new MyView(mContext, mTitles[position], mIcon[position],
  295.  
  296.                         mDialogue[position]);
  297.  
  298.             } else {
  299.  
  300.                 sv = (MyView) convertView;
  301.  
  302.                 sv.setTitle(mTitles[position]);
  303.  
  304.                 sv.setDialogue(mDialogue[position]);
  305.  
  306.             }
  307.  
  308.             return sv;
  309.  
  310.         }
  311.  
  312.  
  313.  
  314.        
  315.  
  316.         private Context mContext;
  317.  
  318.  
  319.  
  320.        
  321.  
  322.         private String[] mTitles =
  323.  
  324.         {
  325.  
  326.                 "Vid One:",  
  327.  
  328.                 "Vid Two:",
  329.  
  330.                 "Vid Three:",      
  331.  
  332.                 "Vid Four:",
  333.  
  334.                 "Vid Five:",
  335.  
  336.                 "Vid Six:",  
  337.  
  338.                 "Vid Seven:",
  339.  
  340.                 "Vid Eight:"
  341.  
  342.         };
  343.  
  344.  
  345.  
  346.     class MyView extends LinearLayout
  347.  
  348.     {
  349.  
  350.         public MyView(Context context, String title, Bitmap Image, String words)
  351.  
  352.         {
  353.  
  354.             super(context);
  355.  
  356.  
  357.  
  358.             this.setOrientation(VERTICAL);
  359.  
  360.             mIcon = new ImageView(context);
  361.  
  362.             mIcon.setImageBitmap(Image);
  363.  
  364.             addView(mIcon,  new LinearLayout.LayoutParams(
  365.  
  366.                     LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
  367.  
  368.            
  369.  
  370.             mTitle = new TextView(context);
  371.  
  372.             mTitle.setText(title);
  373.  
  374.             addView(mTitle, new LinearLayout.LayoutParams(
  375.  
  376.                     LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
  377.  
  378.  
  379.  
  380.             mDialogue = new TextView(context);
  381.  
  382.             mDialogue.setText(words);
  383.  
  384.             addView(mDialogue, new LinearLayout.LayoutParams(
  385.  
  386.                     LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
  387.  
  388.         }
  389.  
  390.  
  391.  
  392.        
  393.  
  394.         public void setTitle(String title) {
  395.  
  396.             mTitle.setText(title);
  397.  
  398.         }
  399.  
  400.  
  401.  
  402.        
  403.  
  404.         public void setDialogue(String words) {
  405.  
  406.             mDialogue.setText(words);
  407.  
  408.         }
  409.  
  410.         public void setIcon(Drawable bullet) {
  411.  
  412.             mIcon.setImageDrawable(bullet);
  413.  
  414.        }
  415.  
  416.         private TextView mTitle;
  417.  
  418.         private TextView mDialogue;
  419.  
  420.         private ImageView mIcon;
  421.  
  422.     }
  423.  
  424.     }
  425.  
  426. }
  427.  
  428.  
Parsed in 0.065 seconds, using GeSHi 1.0.8.4
User avatar
Danuubz
Experienced Developer
Experienced Developer
 
Posts: 78
Joined: Wed Dec 19, 2007 10:44 pm
Location: Germany

Postby euromaster » Tue Jun 24, 2008 7:54 pm

maybe it's because the img tag is inside the brackets of a<![cdata![]]> tag confusing the xml parser?

anyway theirs another tag, "media:thumbnail" which has the loaction of the image as an attribute named "url" but it has the same issue.
euromaster
Junior Developer
Junior Developer
 
Posts: 14
Joined: Mon Jun 16, 2008 10:37 pm

Top
Next

Return to Other Coding-Problems

Who is online

Users browsing this forum: Google Feedfetcher and 22 guests