Search code examples
javablackberryxml-parsingblackberry-simulator

How to display loading screen in Blackberry


I have a problem with Blackberry.

        // Stream connection
        streamConnection = (StreamConnection) Connector
                .open(_url);
        // Document Builder Factory
        DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
                .newInstance();
        DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
        docBuilder.isValidating();
        // Parsing inputStream
        doc = docBuilder.parse(streamConnection.openInputStream());
        doc.getDocumentElement().normalize();
        NodeList list = doc.getElementsByTagName("*");

I want to display Loading Dialog until above the task parser is complete. Because after finished task XML parser, i have to use it for display on screen.

So, how to display Loading dialog until Parser XML is complete? Please help me ! Thanks you very much!!!!!!!!!!!!!!!!!


Solution

  • hi this is pretty much easy task

    following link redirect you how to implement Please wait screen http://supportforums.blackberry.com/t5/Java-Development/Sample-quot-Please-Wait-quot-screen-part-1/ta-p/493808 download that .zip file

    Next take small logic into your application firs take all your parsing concept into a Thread

    for example i am taking xml parser demo and i will convert according to our requirement

    private class Connection extends Thread{
            Vector nodes_vect=new Vector();
            Vector elements_vect=new Vector();
            public Connection(){
                super();
            }
    
            public void run(){
                // define variables later used for parsing
                Document doc;
                StreamConnection conn;
    
                try{
                    //providing the location of the XML file,
                    //your address might be different
                    conn=(StreamConnection)Connector.open
                      ("http://localhost:8000/content/test.xml;deviceside=true");//  http://localhost:8000/content/test.xml
                    //next few lines creates variables to open a
                    //stream, parse it, collect XML data and
                    //extract the data which is required.
                    //In this case they are elements,
                    //node and the values of an element
                    DocumentBuilderFactory docBuilderFactory
                      = DocumentBuilderFactory. newInstance(); 
                    DocumentBuilder docBuilder
                      = docBuilderFactory.newDocumentBuilder();
                    docBuilder.isValidating();
                    doc = docBuilder.parse(conn.openInputStream());
                    doc.getDocumentElement ().normalize ();
                    NodeList list=doc.getElementsByTagName("*");
                    _node=new String();
                    _element = new String();
                    //this "for" loop is used to parse through the
                    //XML document and extract all elements and their
                    //value, so they can be displayed on the device
    
                    for (int i=0;i<list.getLength();i++){
                        Node value=list.item(i).
                          getChildNodes().item(0);
                        _node=list.item(i).getNodeName();
                        _element=value.getNodeValue();
                      nodes_vect.addElement(_node);
                      elements_vect.addElement(_element);
                       if(i==list.getLength()-1){
    
    
                           pushingToNextScreen(nodes_vect, elements_vect);//after last element it will 
                       }
                    }//end for
                }//end try
                //will catch any exception thrown by the XML parser
                catch (Exception e){
                    System.out.println(e.toString());
                }
            }//end connection function
        }// end connection class
    }//end XML_Parsing_Sample
    

    you can call this from any where

    import java.util.Vector;
    
    import javax.microedition.io.*;
    import net.rim.device.api.ui.*;
    import net.rim.device.api.ui.component.*;
    import net.rim.device.api.ui.container.*;
    import net.rim.device.api.system.*;
    import net.rim.device.api.xml.parsers.*;
    import org.w3c.dom.*;
    import org.xml.sax.*;
    
    class XML_Parsing_Sample extends UiApplication{
        //creating a member variable for the MainScreen
        MainScreen _screen= new MainScreen();
        //string variables to store the values of the XML document
        String _node,_element;
        Connection _connectionthread;
    
        public static void main(String arg[]){
            XML_Parsing_Sample application = new XML_Parsing_Sample();
            //create a new instance of the application
            //and start the application on the event thread
            application.enterEventDispatcher();
        }
    
        public XML_Parsing_Sample() {
    
            UiApplication.getUiApplication().invokeLater(new Runnable() {
                public void run() {
                    UiApplication.getUiApplication().pushScreen(new LoadingScreen());
                }
            });
    
    
           // pushScreen(_screen); // creating a screen
            //creating a connection thread to run in the background
            _connectionthread = new Connection();
            _connectionthread.start();//starting the thread operation
        }
    
        public void pushingToNextScreen(final Vector node,final Vector elem){
            UiApplication.getUiApplication().invokeLater(new Runnable() {
                public void run() {
                     UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen());
                     UiApplication.getUiApplication().pushScreen(new datascreen(node, elem));//after last element it will call mainscreen constructer
                }
            });
        }
    
      class datascreen extends MainScreen
      {
          public datascreen(Vector node,Vector elem) {
            //you can write your logic and design with data(vectors contain all data)
        }
      }