android - Get the data from array list from onPost execute method of async task -
i using asynck task
json
, parse it.the value of parsed json
storing in arraylist
. want want arraylist
in different class.i have made method getlist()
arraylist
there getting null
value
async class
public class searchjobasync extends asynctask<string, string, string> { private string response; context c; searchmodel data; arraylist<searchmodel> values; getarraylist list; public searchjobasync(context c, getarraylist list) { this.c = c; this.list = list; } public interface getarraylist { public void getlist(arraylist<searchmodel> data); } public searchjobasync(context c) { this.c = c; } @override protected void onpreexecute() { super.onpreexecute (); commonfunctions.showprogress (c, "please wait...", true); } @override protected void onpostexecute(string s) { values = new arraylist<searchmodel> (); super.onpostexecute (s); if (!s.trim ().contains ("table")) { crouton.maketext ((android.app.activity) c, "nothing found", style.info).show (); } else { try { jsonobject jsonobject = new jsonobject (s); jsonobject newdataset = jsonobject.getjsonobject ("newdataset"); if (newdataset.get ("table") instanceof jsonobject) { jsonobject table = newdataset.getjsonobject ("table"); data = new searchmodel (table.getstring ("job_category"), table.getstring ("min_exp"), table.getstring ("max_exp"), table.getstring ("posted_on"), table.getstring ("candidate_counts"), table.getstring ("applications"), table.getstring ("no_of_pos"), table.getstring ("job_desc"), table.getstring ("job_type"), table.getstring ("job_hours"), table.getstring ("job_status"), table.getstring ("job_exp_date"), table.getstring ("address"), table.getstring ("gender_name"), table.getstring ("religion_name"), table.getstring ("exp_summary"), table.getstring ("ijob_request_id"), table.getstring ("requestor_name")); values.add (data); } else if (newdataset.get ("table") instanceof jsonarray) { jsonarray tablearray = newdataset.getjsonarray ("table"); (int = 0; < tablearray.length (); i++) { jsonobject table = tablearray.getjsonobject (i); data = new searchmodel (table.getstring ("job_category"), table.getstring ("min_exp"), table.getstring ("max_exp"), table.getstring ("posted_on"), table.getstring ("candidate_counts"), table.getstring ("applications"), table.getstring ("no_of_pos"), table.getstring ("job_desc"), table.getstring ("job_type"), table.getstring ("job_hours"), table.getstring ("job_status"), table.getstring ("job_exp_date"), table.getstring ("address"), table.getstring ("gender_name"), table.getstring ("religion_name"), table.getstring ("exp_summary"), table.getstring ("ijob_request_id"), table.getstring ("requestor_name")); values.add (data); } } if (values.size () > 0) { list.getlist (values); } else { } } catch (jsonexception e) { e.printstacktrace (); } } commonfunctions.showprogress (c, "", false); intent = new intent (c, searchjoblistactivity.class); c.startactivity (i); } @override protected string doinbackground(string... s) { response = httprequest.post ("https://beta135.hamarisuraksha.com/web/webservice/hsjobservice.asmx/findjobforvendor").send ("vendor_ientity_code=" + "34588a34-e969-4723-84fe-e5409b66a5b7" + "&job_code=" + "&job_category=1" + "&exp_years_from=0" + "&exp_months_from=0" + "&exp_years_to=0" + "&exp_months_to=0").body (); response = response.replaceall ("<[^>]*>", "").replaceall ("\n", ""); log.e ("search jobs", "" + response); return response; } public arraylist<searchmodel> getlist() { return values; } }
class m using interface
public class searchjoblist extends listfragment implements searchjobasync.getarraylist { private view view; private listview lvsearchjobs; private arraylist<searchmodel> data; searchjobcustomlist customlist; searchjobasync searchjobasync; private context c; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view = inflater.inflate (r.layout.search_job_lists, container, false); return view; } @override public void onactivitycreated(bundle savedinstancestate) { super.onactivitycreated (savedinstancestate); c = getactivity (); lvsearchjobs = (listview) getactivity ().findviewbyid (android.r.id.list); data = new arraylist<searchmodel> (); searchjobasync = new searchjobasync (c, this); } @override public void getlist(arraylist<searchmodel> data) { customlist = new searchjobcustomlist (c, data); setlistadapter (customlist); } }
logcat
java.lang.nullpointerexception @ com.jobs_on_call_fragments.asynctasks.searchjobasync.onpostexecute(searchjobasync.java:83) @ com.jobs_on_call_fragments.asynctasks.searchjobasync.onpostexecute(searchjobasync.java:25) @ android.os.asynctask.finish(asynctask.java:631) @ android.os.asynctask.access$600(asynctask.java:177) @ android.os.asynctask$internalhandler.handlemessage(asynctask.java:644) @ android.os.handler.dispatchmessage(handler.java:99) @ android.os.looper.loop(looper.java:213) @ android.app.activitythread.main(activitythread.java:4787) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:511) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:789) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:556) @ dalvik.system.nativestart.main(native method)
now how arraylist????? getting arrylist making static ,bt not right way.so please me
i think trying value before doinbackground
completes work. use boolean static flag in asynctask
task , update in onpostexecute
. before getting value check flag. simple workaround. else have use interface.
Comments
Post a Comment