java - Error in async task -
i getting error asynctask in android want use getting datas via web service , bind them on grid view
public class productlist extends activity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); ``this.requestwindowfeature(window.feature_no_title); setcontentview(r.layout.activity_product_list); bundle extras = getintent().getextras(); if (extras != null) { ad=extras.getstring("ad"); catid=extras.getstring("catid"); greeting=(textview)findviewbyid(r.id.greetingstext); greeting.settext("ho�geldiniz, "+extras.getstring("ad")); } products = new products(); try { productslist=get.execute(new string[] { integer.tostring(integer.parseint(catid)+1) }).get(); } catch (interruptedexception e) { // todo auto-generated catch block e.printstacktrace(); } catch (executionexception e) { // todo auto-generated catch block e.printstacktrace(); } (int = 0; < productslist.size(); i++) { system.out.println(productslist.get(i).ad); } } public arraylist<productdata> productslist = new arraylist<productdata>(); public class productdata { public productdata() { } public productdata(int id,string ad,string fiyat,string kisaca,string link,string status) { this.id=id; this.ad=ad; this.fiyat=fiyat; this.kisaca=kisaca; this.link=link; this.status=status; } public string status; public int id; public string ad; public string fiyat; public string kisaca; public string link; } public void onitemclick(adapterview<?> parent, view v, int position, long id) { } private class products extends asynctask<string, arraylist<productdata>, arraylist<productdata>> { @override protected arraylist<productdata> doinbackground(string... params) { url url; arraylist<productdata> productsl = new arraylist<productdata>(); try { url = new url("http://www.sucukevim.com/external_services.php?service=get_product_list&&type=filter&&catid="+params[0]); urlconnection connection; connection = url.openconnection(); httpurlconnection httpconnection = (httpurlconnection)connection; int responsecode = httpconnection.getresponsecode(); if(responsecode==httpurlconnection.http_ok) { inputstream in = httpconnection.getinputstream(); documentbuilderfactory dbf = documentbuilderfactory.newinstance(); documentbuilder db = dbf.newdocumentbuilder(); document dom = db.parse(in); element docele = dom.getdocumentelement(); nodelist nl = docele.getelementsbytagname("product"); (int = 0; < nl.getlength(); i++) { node childnode = nl.item(i); element eelement = (element)childnode; system.out.println("baslik= "+gettagvalue("id", eelement)); system.out.println("tarih= "+gettagvalue("ad", eelement)); system.out.println("link= "+gettagvalue("resim", eelement)); productsl.add(new productdata(integer.parseint(gettagvalue("id", eelement)),gettagvalue("ad", eelement),gettagvalue("fiyat", eelement),gettagvalue("kisaca", eelement),gettagvalue("resim", eelement),integer.tostring(i))); } return productsl; } } catch(malformedurlexception e) { } catch(ioexception e) { } catch(parserconfigurationexception e){ } catch(saxexception e) { } return null; } public string gettagvalue(string tag,element eelement) { nodelist nllist = eelement.getelementsbytagname(tag).item(0).getchildnodes(); node nvalue = (node) nllist.item(0); return nvalue.gettextcontent(); } protected void onpostexecute(arraylist<productdata> result) { } } } logcat error:
05-20 05:23:34.460: e/androidruntime(5406): fatal exception: asynctask #3 05-20 05:23:34.460: e/androidruntime(5406): java.lang.runtimeexception: error occured while executing doinbackground() 05-20 05:23:34.460: e/androidruntime(5406): @ android.os.asynctask$3.done(asynctask.java:200) 05-20 05:23:34.460: e/androidruntime(5406): @ java.util.concurrent.futuretask$sync.innersetexception(futuretask.java:274) 05-20 05:23:34.460: e/androidruntime(5406): @ java.util.concurrent.futuretask.setexception(futuretask.java:125) 05-20 05:23:34.460: e/androidruntime(5406): @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:308) 05-20 05:23:34.460: e/androidruntime(5406): @ java.util.concurrent.futuretask.run(futuretask.java:138) 05-20 05:23:34.460: e/androidruntime(5406): @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1088) 05-20 05:23:34.460: e/androidruntime(5406): @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:581) 05-20 05:23:34.460: e/androidruntime(5406): @ java.lang.thread.run(thread.java:1019) 05-20 05:23:34.460: e/androidruntime(5406): caused by: java.lang.nullpointerexception 05-20 05:23:34.460: e/androidruntime(5406): @ com.troyateck.sucukevim.productlist$products.gettagvalue(productlist.java:164) 05-20 05:23:34.460: e/androidruntime(5406): @ com.troyateck.sucukevim.productlist$products.doinbackground(productlist.java:136) 05-20 05:23:34.460: e/androidruntime(5406): @ com.troyateck.sucukevim.productlist$products.doinbackground(productlist.java:1) 05-20 05:23:34.460: e/androidruntime(5406): @ android.os.asynctask$2.call(asynctask.java:185) 05-20 05:23:34.460: e/androidruntime(5406): @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:306) 05-20 05:23:34.460: e/androidruntime(5406): ... 4 more
the problem gettagvalue():
public string gettagvalue(string tag,element eelement) { nodelist nllist = eelement.getelementsbytagname(tag).item(0).getchildnodes(); node nvalue = (node) nllist.item(0); return nvalue.gettextcontent(); } there null pointer somewhere there, on line 164. i'm not sure expression, of 3 lines cause null pointer exception. please check each return value null before using, perhaps this:
public string gettagvalue(string tag,element eelement) { string retval = "not found"; if (eelement != null && eelement.getelementsbytagname(tag) != null && eelement.getelementsbytagname(tag).item(0) != null) { nodelist nllist = eelement.getelementsbytagname(tag).item(0).getchildnodes(); if (nllist != null && nllist.item(0) != null) { node nvalue = (node) nllist.item(0); retval = nvalue.gettextcontent(); } } return retval; }
Comments
Post a Comment