2012-08-13 1 views
1

Amis, je suis confronté à un problème lors de la lecture des informations à partir d'un fichier xml situé sur le code card.The SD est mis en œuvre, mais avec succès il n'y a rien affiché soit sur logcat, ni il n'y a pas exception qui sort. S'il vous plaît aidez-moi pour la même chose.Problème lors de la lecture du fichier XML sur sdcard

public class History extends Activity 
{ 
    private ListView lstv; 

    static ArrayList<Records> arr; 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     // TODO Auto-generated method stub 
     super.onSaveInstanceState(outState); 
     setContentView(R.layout.history); 

     try { 


      String path = Environment.getExternalStorageDirectory()+"/saved_images/history.xml"; 
      File file = new File(path); 
      SAXParserFactory factory=SAXParserFactory.newInstance(); 
      SAXParser parser=factory.newSAXParser(); 
      XMLReader reader=parser.getXMLReader(); 

      XMLHandler handler=new XMLHandler(); 

      //parser.parse(stream,handler); 
      reader.parse(new InputSource(new InputStreamReader(new FileInputStream(file)))); 

      arr=handler.getArray(); 

      ArrayAdapter<Records> adpt=new ArrayAdapter<Records>(this, android.R.layout.simple_list_item_1,arr); 
      //lstv.setAdapter(adpt);      

      handler.startDocument(); 

     } catch (ParserConfigurationException e) { 
      e.printStackTrace(); 
     } catch (SAXException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

    class XMLHandler extends DefaultHandler { 

     ArrayList<Records> array; 
     Records records ; 
     String strCurrentValue = null; 

     public ArrayList<Records> getArray() { 
      return array; 
     } 

     @Override 
     public void startDocument() throws SAXException { 
      super.startDocument(); 
      array=new ArrayList<Records>(); 
     } 

     @Override 
     public void startElement(String uri, String elementName, String qName,Attributes attributes) throws SAXException { 
      super.startElement(uri, elementName, qName, attributes); 

      if(elementName.equals("Record")) 
      { 
       records=new Records(); 
      } 
     } 

     @Override 
     public void characters(char[] ch, int start, int length) 
     throws SAXException { 
      super.characters(ch, start, length); 

      strCurrentValue=new String(ch, start, length); 
     } 

     @Override 
     public void endElement(String uri, String elementName, String qName) 
     throws SAXException { 
      super.endElement(uri, elementName, qName); 
      if(elementName.equals("date")) 
      { 
       records.date=strCurrentValue; 
      }else if(elementName.equals("cc")) 
      { 
       records.cc=strCurrentValue; 
      } 

     } 

     @Override 
     public void endDocument() throws SAXException { 
      super.endDocument(); 

      for(Records c:array) 
      { 
       Log.d("XmlHandler", c.toString()); 
      } 
     } 
    } 
} 

Je suis incapable de voir quoi que ce soit sur le log-cat ou sur l'écran. Aidez-moi s'il vous plaît pour le même code en utilisant des extraits. Merci

+0

Vous devez éviter le chargement à partir du disque et/ou l'analyse syntaxique sur le thread principal. Essayez d'utiliser AsyncTask si vous ne voulez pas faire face à ANR. –

Répondre

1

Il me semble que votre gestionnaire n'ajoute jamais réellement l'enregistrement à la matrice - il semble que vous ayez besoin d'inclure une action pour l'endElement de type 'Record' qui l'ajoute au tableau. En outre, comme Giovanni dit que tout le code tiendra le fil de l'interface utilisateur, si le fichier XML est non-trivial, il doit être géré dans un fil séparé avec une boîte de dialogue de progression.

+0

hey mate Je n'ai pas eu "une action pour l'endElement de type 'Record' qui l'ajoute au tableau." Pouvez-vous l'élaborer plus en détail svp – onkar

+0

Mais vous devriez - vous obtenez (et traitez) un startElement pour cela dans lequel vous créez l'enregistrement. Vous devez trouver l'élément endElement correspondant afin que vous puissiez utiliser ce nouvel enregistrement et l'ajouter au tableau. – Elemental

Questions connexes