android - add value to json object in for loop java -


i have defined new json object , array.

 private jsonarray array = new jsonarray();  private jsonobject obj = new jsonobject(); 

then tried fetch data form firebase in loop , tried put in defined json object , object in defined json array. below code

for(int = 1; < 13; i++){         string str = integer.tostring(i);         mref.child("calendar").child(str).child("start_date").addlistenerforsinglevalueevent(new valueeventlistener() {             @override             public void ondatachange(datasnapshot datasnapshot) {                 start_date = datasnapshot.getvalue().tostring();                  try {                     obj.put("start_date", start_date);                 } catch (jsonexception e) {                     e.printstacktrace();                 }                  log.d("start_date", start_date);             }              @override             public void oncancelled(databaseerror databaseerror) {              }         });         mref.child("calendar").child(str).child("end_date").addlistenerforsinglevalueevent(new valueeventlistener() {             @override             public void ondatachange(datasnapshot datasnapshot) {                 end_date = datasnapshot.getvalue().tostring();                  try {                     obj.put("end_date", end_date);                 } catch (jsonexception e) {                     e.printstacktrace();                 }              }              @override             public void oncancelled(databaseerror databaseerror) {              }         });         log.d("obje", "" + obj);         array.put(obj);      }      log.d("arrary", "" + array); 

but when log array or object shows empty. below log of json object of single loop. d/obje: {} , array after loop. d/arrary: [{},{},{},{},{},{},{},{},{},{},{},{}]

but when log object inside ondatachange class logs data. when log @ end of loop shows empty. can me. in advanced.

and log of start date show data comming firebase d/start_date: 09/17/2016

the problem trying value asynchronous callback. you're loop end before callback asynchronous request it's showing empty.

try this,

for(int = 1; < 13; i++){     string str = integer.tostring(i);     mref.child("calendar").child(str).addlistenerforsinglevalueevent(new valueeventlistener() {         @override         public void ondatachange(datasnapshot datasnapshot) {             string start_date = (string) datasnapshot.child("start_date").getvalue();             string end_date = (string) datasnapshot.child("end_date").getvalue();              try {                  jsonobject jsonobject = new jsonobject();                 jsonobject.put("start_date", start_date);                 jsonobject.put("end_date", end_date);                  log.d("obje", "" + jsonobject);                  array.put(jsonobject);              } catch (jsonexception e) {                 e.printstacktrace();             }              log.d("start_date", start_date);         }          @override         public void oncancelled(databaseerror databaseerror) {          }     }); } 

Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -