Search code examples
androidautocompletetextviewandroid-ksoap2

Autocomplete textview data Fetch from ksoap webservice, Using Search icon Onclick request with asynchronous task


How can we fetch Data from ksoap web service, show in Android Autocomplete textview search suggestion, using Onclick Search button.


Solution

  • Working code For Autocomplete textview data Fetch from ksoap webservice, Using Search icon Click Request .

    it Will Show the Suggestion from Ksoap WebService.

    package com.example;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import org.json.JSONArray;
    import org.json.JSONObject;
    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.PropertyInfo;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapPrimitive;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.HttpTransportSE;
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.content.pm.LabeledIntent;
    import android.content.pm.PackageManager;
    import android.content.pm.ResolveInfo;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.support.v4.app.ActionBarDrawerToggle;
    import android.support.v4.widget.DrawerLayout;
    import android.support.v7.app.ActionBarActivity;
    import android.text.Html;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.AutoCompleteTextView;
    import android.widget.BaseAdapter;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.widget.AdapterView.OnItemClickListener;
    
    public class FindCity extends ActionBarActivity implementsOnItemClickListener, OnClickListener 
            {
    
        AutoCompleteTextView SearchAutoComplte;
        Button searchicon;
    
        // for WebService 
            private static final String SOAP_ACTION2 = "http:*************";
            private static final String NAMESPACE2 = "http:********************";
            private static final String URL2 = "http:****************";
            private static final String METHOD_NAME2 = "**********";
            private String TAG2 = "City";
            public static String Status_Response = "";
    
    
               public String Autocomplete_SearchValue;
               public  String  Cityname;
    
               String[] CITYNAME;
    
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            SearchAutoComplte=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);
            Autocomplete_SearchValue =SearchAutoComplte.getText().toString();
    
            searchicon = (Button) findViewById(R.id.Search_iconimage);
    
            searchicon.setOnClickListener(this);
    
        }
    
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
    
            case R.id.Search_iconimage:
    
    
    
                    AsyncCallWS task = new AsyncCallWS();
                    // Call execute
                    task.execute();
    
                break;
    
            }
    
        }
    
            private class AsyncCallWS extends AsyncTask<String, Void, Void> {
                @Override
                protected Void doInBackground(String... params) {
                    Log.i(TAG2, "doInBackground");
                    try {
    
                        getdata(Autocomplete_SearchValue);
    
                    } catch (Exception e) {
                        Toast.makeText(getApplicationContext(),"error caught in do in background", Toast.LENGTH_SHORT).show();
                        e.printStackTrace();
    
                    }
                    return null;
    
                    // return null;
                }
    
                @Override
                protected void onPostExecute(Void result) {
                    Log.i(TAG2, "onPostExecute");
    
                    try {
    
    
    
                        ArrayAdapter<String> adapter = new ArrayAdapter<String>(FindCity.this,android.R.layout.select_dialog_singlechoice, CITYNAME);
    
                        //SearchEdittext.setThreshold(1);
                        SearchAutoComplte.setAdapter(adapter);
    
    
    
    
                    } catch (Exception e) {
                        Log.i(TAG2, "Error");
    
                        e.printStackTrace();
                    }
    
                }
    
                @Override
                protected void onPreExecute() {
                    Log.i(TAG2, "onPreExecute");
    
                }
    
                @Override
                protected void onProgressUpdate(Void... values) {
                    Log.i(TAG2, "onProgressUpdate");
                }
    
            }
    
            public void getdata(String SearchValue) 
            {
                // Create request
                SoapObject request = new SoapObject(NAMESPACE2, METHOD_NAME2);
    
    
    
                PropertyInfo pi4 = new PropertyInfo();
                pi4.setName("City");
                pi4.setValue(SearchValue);// get the string that is to be sent to the webservice
                pi4.setType(String.class);
                request.addProperty(pi4);
    
                // Create envelope
                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                envelope.dotNet = true;
                // Set output SOAP object
                envelope.setOutputSoapObject(request);
                // Create HTTP call object
                HttpTransportSE androidHttpTransport = new HttpTransportSE(URL2);
    
                try {
                    // Invole web service
                    androidHttpTransport.call(SOAP_ACTION2, envelope);
                    // Get the response
                    SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
    
                    //Converting string to Array list
                      ArrayList<String> Servciecityname_arr= new ArrayList<String>();
    
    
                    if ((response.toString()).contains("{")) 
                    {
    
                        SoapObject rep = (SoapObject) envelope.bodyIn;
                        JSONArray jr = new JSONArray(rep.getPropertyAsString(0));
                        for (int i = 0; i < jr.length(); i++) {
                            JSONObject jb = (JSONObject) jr.get(i);
    
    
                               Cityname = jb.getString("CityName123");
    
    
                               Servciecityname_arr.add(Cityname);
    
                        }
    
                        CITYNAME = new String[Servciecityname_arr.size()];
                        CITYNAME = Servciecityname_arr.toArray(CITYNAME);
    
    
                    } 
                    else
                    {
                        Status_Response = response.toString();
                    }
    
                } catch (Exception e) {
                    Log.i(TAG2, "Error in catch");
                    e.printStackTrace();
                }
    
            }
    
    
    
    }