XML : Android Xml data parsing

I am trying to parse xml and display it into list view but after run the app nothing happen the list display but not with xml data . i don't know if i missing something please can help me .

MainActivity class

  public class MainActivity extends ListActivity {  // All static variables  static final String URL = "http://api.androidhive.info/pizza/?format=xml";  // XML node keys  static final String KEY_ITEM = "item"; // parent node  static final String KEY_ID = "id";  static final String KEY_NAME = "name";  static final String KEY_COST = "cost";  static final String KEY_DESC = "description";    @Override  protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.activity_main);        if (android.os.Build.VERSION.SDK_INT > 9) {          StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();          StrictMode.setThreadPolicy(policy);      }      ListView myList=(ListView)findViewById(android.R.id.list);        ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();        XMLParser parser = new XMLParser();      String xml = null; // getting XML      try {          xml = parser.getXmlFormUrl(URL);      } catch (IOException e) {          e.printStackTrace();      }      Document doc = parser.getDomElement(xml); // getting DOM element      NodeList nl = doc.getElementsByTagName(KEY_ITEM);      // looping through all item nodes <item>      for (int i = 0; i < nl.getLength(); i++) {          // creating new HashMap          HashMap<String, String> map = new HashMap<String, String>();          Element e = (Element) nl.item(i);          // adding each child node to HashMap key => value          map.put(KEY_ID, parser.getValue(e, KEY_ID));          map.put(KEY_NAME, parser.getValue(e, KEY_NAME));          map.put(KEY_COST, "Rs." + parser.getValue(e, KEY_COST));          map.put(KEY_DESC, parser.getValue(e, KEY_DESC));            // adding HashList to ArrayList          menuItems.add(map);      }      // Adding menuItems to ListView      ListAdapter adapter = new SimpleAdapter(this, menuItems,              R.layout.activity_main,              new String[] { KEY_NAME, KEY_DESC, KEY_COST }, new int[] {              R.id.name, R.id.desciption, R.id.cost });        myList.setAdapter(adapter);      // selecting single ListView item    }    

}

XmlParser class

    public class XMLParser {      String result;      public String getXmlFormUrl(String link) throws IOException{      URL url=new URL(link.toString());      HttpURLConnection UrlConnection= (HttpURLConnection)     url.openConnection();      int status=UrlConnection.getResponseCode();      if(status==200){          InputStream inputStream=UrlConnection.getInputStream();          BufferedReader bufferedReader=new BufferedReader(new     InputStreamReader(inputStream,"UTF8"));          StringBuilder stringBuilder= new StringBuilder();          String line;          while ((line=bufferedReader.readLine())!=null){              stringBuilder.append((line+"\n"));          }          result=stringBuilder.toString();          inputStream.close();      }      return  result;  }  public Document getDomElement(String xml){      Document doc = null;      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();      try {            DocumentBuilder db = dbf.newDocumentBuilder();            InputSource is = new InputSource();          is.setCharacterStream(new StringReader(xml));          doc = db.parse(is);        } catch (ParserConfigurationException e) {          Log.e("Error: ", e.getMessage());          return null;      } catch (SAXException e) {          Log.e("Error: ", e.getMessage());          return null;      } catch (IOException e) {          Log.e("Error: ", e.getMessage());          return null;      }      // return DOM      return doc;  }  public String getValue(Element item, String str) {      NodeList n = item.getElementsByTagName(str);      return this.getElementValue(n.item(0));  }    public final String getElementValue( Node elem ) {      Node child;      if( elem != null){          if (elem.hasChildNodes()){              for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){                  if( child.getNodeType() == Node.TEXT_NODE  ){                      return child.getNodeValue();                  }              }          }      }      return "";  }    

}

ActivityMain.xml

   <ListView          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:id="@android:id/list"          android:layout_alignParentTop="true"          android:layout_centerHorizontal="true"          android:layout_marginTop="73dp" />  

after this line i think the list should display with xml data but nothing happens

   myList.setAdapter(adapter);    

No comments:

Post a Comment