I get some error. I know what the problem is, but I do not know how to fix it.
I have 4 counters. Each spinner knitted one asintescu. In short, when I select one element on spinner1, do a second synthesis, which fills spinner2 (the selected element adds a second synthesis as a parameter). Continues this way.
But until the end of the first synthetics, spinner2 cannot fill up. In this case, I get an error. How to fix it? How to do when the first task ends, the second task works?
Here is the code:
First task
public class ilceDoldur extends AsyncTask<String[],String[],String[]>{ @Override protected String[] doInBackground(String[]... params) { SoapObject request = new SoapObject(NAMESPACE, "ILCEGetir"); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.setOutputSoapObject(request); HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); androidHttpTransport.debug = true; try { androidHttpTransport.call("http://tempuri.org/ILCEGetir", envelope); SoapObject response = (SoapObject) envelope.getResponse(); ilceList = new String[response.getPropertyCount()]; for(int i=0;i<response.getPropertyCount();i++){ ilceList[i] = response.getPropertyAsString(i).toString().trim(); } } catch (Exception e) { e.printStackTrace(); } return ilceList; } protected void onPostExecute(String[] ilceList){ ilceSpinner = (Spinner) findViewById(R.id.spinner1); ArrayAdapter<String> ilce_adapter = new ArrayAdapter<String>(NormalAnasayfa.this,android.R.layout.simple_spinner_item, ilceList); ilce_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); ilceSpinner.setAdapter(ilce_adapter); kontrol=true; } }
Second task
public class semtDoldur extends AsyncTask<String,String[],String[]>{ @Override protected String[] doInBackground(String... ParamIlce) { PropertyInfo ilce = new PropertyInfo(); ilce.name= "ilce"; ilce.setValue(ParamIlce); ilce.type = PropertyInfo.STRING_CLASS; SoapObject request = new SoapObject(NAMESPACE, "SEMTGetir"); request.addProperty(ilce); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.bodyOut=request; envelope.dotNet = true; envelope.setOutputSoapObject(request); HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); androidHttpTransport.debug = true; try { androidHttpTransport.call("http://tempuri.org/SEMTGetir", envelope); SoapObject response = (SoapObject) envelope.getResponse(); semtList = new String[response.getPropertyCount()]; for(int i=0;i<response.getPropertyCount();i++){ semtList[i] = response.getPropertyAsString(i).toString().trim(); } } catch (Exception e) { e.printStackTrace(); } return semtList; } protected void onPostExecute(String[] semtList){ semtSpinner = (Spinner) findViewById(R.id.spinner2); ArrayAdapter<String> semt_adapter = new ArrayAdapter<String>(NormalAnasayfa.this, android.R.layout.simple_spinner_item, semtList); semt_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); semtSpinner.setAdapter(semt_adapter); kontrol=true; } }
Oncreate ()
new ilceDoldur().execute(); if(kontrol==true){ kontrol=false; ilceSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { secilenIlce = ilceSpinner.getSelectedItem().toString().trim(); new semtDoldur().execute(secilenIlce); } public void onNothingSelected(AdapterView<?> arg0) {} }); }
Edit: I get data from my web service and populate spinner1. Where do I get the data (selected element spinner1)? and where do I fill spinner2 to do the second task?