Avinash4201 / Country-state-depedent

0 stars 0 forks source link

Not able to get City List #1

Open Avinash4201 opened 6 years ago

Avinash4201 commented 6 years ago

this is country state and city dropdown in android. I am facing problem here. I am not getting city list after selecting state. my problem is when I am selecting state then I am getting only one City "Hazar e sarif" for all the country's state. please look in to this.

package com.example.jjjj.dashboard.app;

import android.os.Bundle; import android.support.design.widget.TextInputLayout; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.EditText;

import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.StringRequest; import com.android.volley.toolbox.Volley; import com.example.jjjj.dashboard.R; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject;

import java.util.ArrayList; import java.util.HashMap; import java.util.Map;

import fr.ganfra.materialspinner.MaterialSpinner;

public class MainInfoActivity extends AppCompatActivity {

private RequestQueue mrequestQueue;
private StringRequest stringRequest;
private ArrayList <String> country_list;
private ArrayList <String> categoryList;
private ArrayList <String> state_List;
private ArrayList<String> city_List;
//private ArrayList <Integer> country_list_ID = new ArrayList <Integer> ();
private ArrayList<String> state_list_ID = new ArrayList <> ();
//private ArrayList<String> city_list_ID = new ArrayList <> ();

private static final String TAG = MainInfoActivity.class.getName ( );

EditText CompanyInputName, CompanyInputAddress, CompanyInputPincode;
TextInputLayout CompanyInputLayoutName, CompanyInputLayoutAddress, CompanyInputLayoutPincode;
MaterialSpinner SpinnerCat, SpinnerCountry, SpinnerState, SpinnerCity;
private String url = "";
private String url1 = "";
private String url2 = "";
private String url3  = "";

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

    CompanyInputLayoutName = (TextInputLayout) findViewById (R.id.company_input_layout_name);
    CompanyInputLayoutAddress = (TextInputLayout) findViewById (R.id.company_input_layout_address);
    CompanyInputLayoutPincode = (TextInputLayout) findViewById (R.id.company_input_layout_pincode);

    CompanyInputName = (EditText) findViewById (R.id.company_input_name);
    CompanyInputAddress = (EditText) findViewById (R.id.company_input_address);
    CompanyInputPincode = (EditText) findViewById (R.id.company_input_pincode);

    SpinnerCat = findViewById (R.id.spinner_cat);
    SpinnerCountry = findViewById (R.id.spinner_country);
    SpinnerState = findViewById (R.id.spinner_state);
    SpinnerCity = findViewById (R.id.spinner_city);
    categoryList = new ArrayList <> ( );
    country_list = new ArrayList <> ( );
    state_List = new ArrayList <> ( );
    city_List = new ArrayList <> ( );

     loadcat();
     loadcountry();

    SpinnerCat.setOnItemSelectedListener (new AdapterView.OnItemSelectedListener ( ) {
        @Override
        public void onItemSelected(AdapterView <?> adapterView, View view, int i, long l) {

        }

        @Override
        public void onNothingSelected(AdapterView <?> adapterView) {

        }
    });

    SpinnerCountry.setOnItemSelectedListener (new AdapterView.OnItemSelectedListener ( ) {
        @Override
        public void onItemSelected(AdapterView <?> parent, View view, int pos, long l) {
            parent.getItemAtPosition (pos).toString ();
            int id = pos+1;
            //state_List.clear ();
            loadState (id);

            //if (pos == 0) {
               // String Country = parent.getItemAtPosition (id).toString ();
            //}
        }

        @Override
        public void onNothingSelected(AdapterView <?> adapterView) {

        }
    });

    SpinnerState.setOnItemSelectedListener (new AdapterView.OnItemSelectedListener ( ) {
        @Override
        public void onItemSelected(AdapterView <?> parent, View view, int pos, long l) {

            parent.getItemAtPosition (pos).toString ();

             int pid = pos+1;
            loadCity(pid);
            city_List.clear ();

            // if (post==0){
                //String State = parent1.getItemAtPosition (pid).toString ();
           //}
        }

        @Override
        public void onNothingSelected(AdapterView <?> adapterView) {

        }
    });

    SpinnerCity.setOnItemSelectedListener (new AdapterView.OnItemSelectedListener ( ) {
        @Override
        public void onItemSelected(AdapterView <?> par, View view, int position, long l) {

            par.getItemAtPosition (position);

        }

        @Override
        public void onNothingSelected(AdapterView <?> adapterView) {

        }
    });

}

private void loadcat() {

    mrequestQueue = Volley.newRequestQueue (this);
    stringRequest = new StringRequest (Request.Method.GET, url1, new Response.Listener <String> ( ) {
        @Override
        public void onResponse(String response) {

            try {

                JSONObject jsonObject = new JSONObject (response);
                JSONArray jsonArray = jsonObject.getJSONArray ("CustomerCategoryList");
                Log.i (TAG, "Response : "+ jsonArray.toString ());
                for (int j = 0; j<jsonArray.length (); j++) {
                    JSONObject feedobj1 = (JSONObject) jsonArray.get (j);
                    categoryList.add (feedobj1.getString ("categoryName"));

                }

                SpinnerCat.setAdapter (new ArrayAdapter<> (MainInfoActivity.this, android.R.layout.simple_spinner_dropdown_item, categoryList));

            } catch (JSONException e){
                e.printStackTrace ();
            }

        }
    }, new Response.ErrorListener ( ) {
        @Override
        public void onErrorResponse(VolleyError error) {

            Log.i (TAG, "Response: "+ error.toString ());

        }
    });

    mrequestQueue.add (stringRequest);
}

private void loadcountry() {
    mrequestQueue = Volley.newRequestQueue (this);
    stringRequest =new StringRequest (Request.Method.GET, url, new Response.Listener <String> ( ) {

        @Override
        public void onResponse(String response) {
            try {
                JSONObject jsonObject = new JSONObject (response);
                JSONArray jsonArray = jsonObject.getJSONArray ("countryList");
                Log.i (TAG, "Response : "+ jsonArray.toString ());
                int id = 0;
                String CountryName;
                for (int i = 0; i<jsonArray.length (); i++) {
                    JSONObject feedobj = (JSONObject) jsonArray.get (i);

                    id = feedobj.getInt ("id");
                    CountryName = feedobj.getString ("countryName");
                    country_list.add (feedobj.getString ("countryName"));
                    //country_list_ID.add (feedobj.getInt ("id"));

                }

                SpinnerCountry.setAdapter (new ArrayAdapter<> (MainInfoActivity.this, android.R.layout.simple_spinner_dropdown_item, country_list));

            } catch (JSONException e) {

                e.printStackTrace ();
            }

        }
    }, new Response.ErrorListener ( ) {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.i (TAG, "Response: "+ error.toString ());

        }
    });
    mrequestQueue.add (stringRequest);
}

public void loadState(final int id) {

    mrequestQueue = Volley.newRequestQueue (this);
    stringRequest = new StringRequest (Request.Method.POST, url2, new Response.Listener <String> () {
        @Override
        public void onResponse(String response) {

            try {

                JSONObject jsonObject = new JSONObject (response);{

                JSONArray jsonArray = jsonObject.getJSONArray ("stateList");
                state_List.clear ();
                state_list_ID.clear ();
                for (int k = 0; k<jsonArray.length (); k++) {
                    JSONObject feedobj2 = (JSONObject) jsonArray.get (k);
                    int pid = feedobj2.getInt ("id");
                    state_List.add (feedobj2.getString ("stateName"));
                    state_list_ID.add (feedobj2.getString ("id" ));

                }
                 Log.i (TAG, "Response : "+ jsonArray.toString ());
                }

                SpinnerState.setAdapter (new ArrayAdapter<> (MainInfoActivity.this,android.R.layout.simple_spinner_dropdown_item,state_List));

            } catch (JSONException e){

                e.printStackTrace ();
            }

        }
    }, new Response.ErrorListener ( ) {
        @Override
        public void onErrorResponse(VolleyError error) {

            Log.i (TAG, "Response: "+ error.toString ());

        }
    }

    ) {

        @Override
        protected Map <String, String> getParams() {
            Map <String, String> params = new HashMap <> ();
            params.put ("countryid",String.valueOf (id));
            return params;
        }
    };

    mrequestQueue.add (stringRequest);

}

public void loadCity(final int pid){

    mrequestQueue = Volley.newRequestQueue (this);
    stringRequest = new StringRequest (Request.Method.POST, url3, new Response.Listener <String> ( ) {
        @Override
        public void onResponse(String response) {

            try {

                JSONObject jsonObject = new JSONObject (response);
                {
                JSONArray jsonArray = jsonObject.getJSONArray ("cityList");
                for (int p = 0; p<jsonArray.length (); p++) {
                    JSONObject feedobj3 = (JSONObject) jsonArray.get (p);
                    //int cid = feedobj3.getInt ("id");
                    city_List.add (feedobj3.getString ("cityname"));

                }
                 Log.i (TAG, "Response : "+ jsonArray.toString ());

                }

                SpinnerCity.setAdapter (new ArrayAdapter<> (MainInfoActivity.this,android.R.layout.simple_spinner_dropdown_item,city_List));

            } catch (JSONException e){

                e.printStackTrace ();
            }

        }
    }, new Response.ErrorListener ( ) {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.i (TAG, "Response: "+ error.toString ());

        }
    }

    ) {

        @Override
        protected Map <String, String> getParams() {
            Map <String, String> params1 = new HashMap <> ();
            params1.put ("stateid",String.valueOf (pid));
            return params1;
        }
    };
    mrequestQueue.add (stringRequest);
}

}
Avinash4201 commented 6 years ago

please check where I did wrong in this program