java - Data appears before onPostExecute fired -
i have next strange problem, i'm trying parse response json data in background, because there's lot of data , call this:
protected asynctask<jsonobject, void, void> createparsetask() { return new asynctask<jsonobject, void, void>() { @override protected void doinbackground(jsonobject... jsonobjects) { parseresponse(jsonobjects[0]); return null; } @override protected void onpostexecute(void avoid) { super.onpostexecute(avoid); mprogressbar.setvisibility(view.gone); if (!mempty) { if (swiperefresh.isrefreshing()) { swiperefresh.setrefreshing(false); madapter.notifydatasetchanged(); } else if(!mshowstored) { madapter.notifydatasetchanged(); } } else if (mshowstored) { mprogressbar.setvisibility(view.gone); } else { interneterror.setvisibility(view.visible); interneterror.settext(getactivity().getresources().getstring(r.string.emptyrequesterror)); } if (!mshowstored) { checkdata(); } } }; }
and parseresponse() method written this:
protected void parseresponse(jsonobject response) { jsonarray jsonarray = null; jsonparser parser = new jsonparser(); ordersdatabase ordersdatabase = new ordersdatabase(appcontroller.getappcontext()); try { sharedpreferences sp = preferencemanager.getdefaultsharedpreferences(appcontroller.getappcontext()); sharedpreferences.editor editor = sp.edit(); string datetime = response.getstring("serverdatetime"); datetime = datetime.replace(":", "%3a"); datetime = datetime.replace("+", "%2b"); editor.putstring("serverdatetime", datetime); editor.apply(); jsonarray = response.getjsonarray("updatedorders"); jsonarray active = response.getjsonarray("activeorders"); if (jsonarray.length() == 0 && active.length() == 0) { mempty = true; } else if (response.length() > 0 || jsonarray.length() > 0 && active.length() > 0) { (int = 0; < jsonarray.length(); i++) { jsonelement jsonelement = new jsonparser().parse(string.valueof(jsonarray.get(i))); jsonobject jsonobject = jsonelement.getasjsonobject(); string orderid = jsonobject.getasjsonprimitive("id").getasstring(); if (!mshowstored) { if (!ordersdatabase.checkorder(orderid)) { ordersdatabase.addorderdata(jsonobject.getasjsonprimitive("id").getasstring(), string.valueof(jsonobject)); } else { ordersdatabase.updateorderdata(jsonobject.getasjsonprimitive("id").getasstring(), string.valueof(jsonobject)); } } } (int = 0; < active.length(); i++) { jsonobject jsonobject = active.getjsonobject(i); string activeorder = jsonobject.getstring("id"); activeorders.add(activeorder); if (ordersdatabase.checkorder(activeorder)) { if (!textutils.isempty(activeorder)) { jsonobject jsonorder = (jsonobject) parser.parse(ordersdatabase.getorderdata(activeorder)); citylist.add(orderdata.fromjson(jsonorder)); } } } } } catch (jsonexception e) { e.printstacktrace(); } }
so don't know how, somehow data appeared in recyclerview there before onpostexecute shown, because in post execute progressbar should go invisible , notifydatasetchange
should appear there. data appears before progressbar goes invisible , notifydatasetchange()
fired, me please!
i don't have privilege comment, i'll post here: don't happen have listeners on ordersdatabase
, citylist
or activeorders
?
Comments
Post a Comment