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
Post a Comment