Thursday, 12 June 2014

binding values to spinner from webservice using sax parser

activity_main.xml:
  // take one listview in activity_main.xml file

step1: 

  downlode ksoap2 library file and add this in "libs" folder and build this library.


step2: 
//write  this code in main activity class
MainActivity.java:


package com.example.webservicetospinner;

import java.io.StringReader;

import java.util.ArrayList;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import android.R.string;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

doctors doc=new doctors();
Toast.makeText(getApplicationContext(), doc.Doctorsinfo(), 20000).show();

try
{
final ArrayList list=new ArrayList();
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
parser.parse(new InputSource(new StringReader(doc.Doctorsinfo())), new DefaultHandler()
{

boolean name=false;

public void startElement(String uri, String localName, String qName, org.xml.sax.Attributes attributes) throws SAXException {

if(qName.equalsIgnoreCase("doctorname")){
name=true;
}
};
@Override
      public void characters(char[] ch, int start, int length)
      throws SAXException {
      // TODO Auto-generated method stub
      super.characters(ch, start, length);
      if(name)
      {
          list.add(new String(ch,start,length));
      }
      }
 
     public void endElement(String uri, String localName, String qName) throws SAXException {
   
     name=false;
   
     };
   
}

    );

   Spinner spin=(Spinner)findViewById(R.id.spinner1);
ArrayAdapter < String > adapter = new ArrayAdapter < String > (this,
                     android.R.layout.simple_list_item_1,list);
       
adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
            spin.setAdapter(adapter);
}
catch (Exception e) {
e.printStackTrace();
}
}

}


step3:
//create a class with name of doctors.java and paste below code:
doctors.java:

package com.example.webservicetospinner;
import org.ksoap2.SoapEnvelope;


import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

public class doctors {
private static String SOAP_ACTION1 = "give action name";
     private static String NAMESPACE = "give namespace here";
     private static String METHOD_NAME1 = "method name";
    private static String URL = " give ur url?wsdl";
private String result_=""; 
 
public String Doctorsinfo(){
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1);       
         
        //Use this to add parameters
     /*   request.addProperty("visitDate","1-5-2014");    
        request.addProperty("infoType","");
        request.addProperty("patientEmail","9985614637"); */
        //Declare the version of the SOAP request
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
       
        envelope.setOutputSoapObject(request);
        envelope.dotNet = true;
       
        try {
              HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
             
              //this is the actual part that will call the webservice
              androidHttpTransport.call(SOAP_ACTION1, envelope);
             
              // Get the SoapResult from the envelope body.
              SoapObject result = (SoapObject)envelope.bodyIn;

              if(result != null)
              {
                    //Get the first property and change the label text
                   // txtCel.setText(result.getProperty(0).toString());
             
             result_=result.getProperty(0).toString();
              }  
              else
              {
                  result_="no data found";  
              }
        } catch (Exception e) {
              e.printStackTrace();
        }
return result_;  
}





No comments:

Post a Comment