java - How to initialize a JSONArray and use in other methods -


i'm going initialize jsonarray , set input of method copies jsonarray arraylist.

this method:

    public arraylist<string> copyjsonarraytoarraylist(jsonarray jarray){     arraylist<string> arraylist = new arraylist<> ();     (int = 0; < jarray.length(); i++) {         try {             arraylist.add(jarray.getjsonobject(i).getstring("city"));         } catch (jsonexception e) {             e.printstacktrace();         }     }     return arraylist; } 

and code:

    requestqueue queue = volley.newrequestqueue(getapplicationcontext());     stringrequest stringrequest = new stringrequest(request.method.get, ws_get_city, new response.listener<string>() {         @override         public void onresponse(string response) {             progressbar.setvisibility(view.gone);              try {                 jsonobject = new jsonobject(response);                 jsonarray = jsonobject.getjsonarray("getcity");              } catch (jsonexception e) {                 e.printstacktrace();             }          }     }, new response.errorlistener() {         @override         public void onerrorresponse(volleyerror error) {             toast.maketext(getapplicationcontext(), "error", toast.length_short).show();             progressbar.setvisibility(view.gone);         }     });      queue.add(stringrequest);       ac_srccity = (autocompletetextview) findviewbyid(r.id.ac_srccity);     arrayadapter<string> adaptersrc = new arrayadapter<>(this, android.r.layout.simple_list_item_1, copyjsonarraytoarraylist(jsonarray));     ac_srccity.setadapter(adaptersrc); 

but when use jsonarray method input says jsonarray null ! debugged code , understood sequence of execution this:

1.

    requestqueue queue = volley.newrequestqueue(getapplicationcontext()); 

2.

    queue.add(stringrequest); 

3.

 ac_srccity = (autocompletetextview) findviewbyid(r.id.ac_srccity); 

4.

arrayadapter<string> adaptersrc = new arrayadapter<>(this, android.r.layout.simple_list_item_1, copyjsonarraytoarraylist(jsonarray)); 

and in line 4 jsonarray null !

any idea !?

your jsonarray isn't being instantiated until callback in onresponse(string), until stringrequest finished jsonarray null. instead move inititlization callback so:

requestqueue queue = volley.newrequestqueue(getapplicationcontext()); stringrequest stringrequest = new stringrequest(request.method.get, ws_get_city, new response.listener<string>() {     @override     public void onresponse(string response) {         progressbar.setvisibility(view.gone);          try {             jsonobject = new jsonobject(response);             jsonarray = jsonobject.getjsonarray("getcity");             ac_srccity = (autocompletetextview) findviewbyid(r.id.ac_srccity);             arrayadapter<string> adaptersrc = new arrayadapter<>(this, android.r.layout.simple_list_item_1, copyjsonarraytoarraylist(jsonarray));             ac_srccity.setadapter(adaptersrc);          } catch (jsonexception e) {             e.printstacktrace();         }      } }, new response.errorlistener() {     @override     public void onerrorresponse(volleyerror error) {         toast.maketext(getapplicationcontext(), "error", toast.length_short).show();         progressbar.setvisibility(view.gone);     } });  queue.add(stringrequest); 

Comments

Popular posts from this blog

sequelize.js - Sequelize group by with association includes id -

android - Robolectric "INTERNET permission is required" -

java - Android raising EPERM (Operation not permitted) when attempting to send UDP packet after network connection -