Thursday 15 July 2010

java - null pointer json data -



java - null pointer json data -

i have listview special id @android:id/list

the json info has array objects in it.

public class mainactivity extends listactivity { string key_descript = "description:"; string key_name = "name:"; string line = null; jsonarray datalist=null; jsonobject getobj=null; bufferedreader br; stringbuilder sb; string web=null; jsonarray jresult=null; url url; httpurlconnection cn; string tag="myactivity"; string name = null; string [] sortedlist; progressbar loading; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); loading= (progressbar) findviewbyid(r.id.progressbar1); web = "http://api.mtgdb.info/search/dragon"; new jsonget().execute(web); } protected class jsonget extends asynctask<string , void, jsonarray>{ @override protected jsonarray doinbackground(string... params) { seek { url= new url(params[0]); cn=(httpurlconnection) url.openconnection(); br= new bufferedreader(new inputstreamreader(cn.getinputstream())); sb= new stringbuilder(); while((line = br.readline())!=null){ sb.append(line+"\n"); } br.close(); datalist= new jsonarray(sb.tostring()); } grab (malformedurlexception e) { e.printstacktrace(); } grab (ioexception e) { e.printstacktrace(); } grab (jsonexception e) { e.printstacktrace(); } homecoming datalist; } @override protected void onpostexecute(jsonarray result) { super.onpostexecute(result); jresult=result; passlist(); } } public void passlist() { loading.setvisibility(view.invisible); if (jresult==null){ log.e(tag, "error"); }else{ arraylist<hashmap<string, string>> newlist =new arraylist<hashmap<string,string>>(); (int =0;i<jresult.length();i++){ try{ getobj= jresult.getjsonobject(i); name=getobj.getstring("name"); string description =getobj.getstring("description"); hashmap<string, string> secondlist= new hashmap<string, string>(); secondlist.put(key_name, name); secondlist.put(key_descript, description); newlist.add(secondlist); }catch (exception e){ log.i(tag, "this error"); } } arrays.sort(sortedlist); string [] keys ={key_name,key_descript}; int [] ids ={android.r.id.text1,android.r.id.text2}; simpleadapter adapter = new simpleadapter(this, newlist, android.r.layout.simple_list_item_2, keys, ids); setlistadapter(adapter); } }

stacktrace:

1-06 22:49:10.019: d/androidruntime(1476): shutting downwards vm 11-06 22:49:10.023: w/dalvikvm(1476): threadid=1: thread exiting uncaught exception (group=0xa4d50b20) 11-06 22:49:10.023: e/androidruntime(1476): fatal exception: main 11-06 22:49:10.023: e/androidruntime(1476): process: com.example.mtg, pid: 1476 11-06 22:49:10.023: e/androidruntime(1476): java.lang.nullpointerexception 11-06 22:49:10.023: e/androidruntime(1476): @ java.util.comparabletimsort.sort(comparabletimsort.java:142) 11-06 22:49:10.023: e/androidruntime(1476): @ java.util.arrays.sort(arrays.java:1970) 11-06 22:49:10.023: e/androidruntime(1476): @ com.example.mtg.mainactivity.passlist(mainactivity.java:122) 11-06 22:49:10.023: e/androidruntime(1476): @ com.example.mtg.mainactivity$jsonget.onpostexecute(mainactivity.java:91) 11-06 22:49:10.023: e/androidruntime(1476): @ com.example.mtg.mainactivity$jsonget.onpostexecute(mainactivity.java:1) 11-06 22:49:10.023: e/androidruntime(1476): @ android.os.asynctask.finish(asynctask.java:632) 11-06 22:49:10.023: e/androidruntime(1476): @ android.os.asynctask.access$600(asynctask.java:177) 11-06 22:49:10.023: e/androidruntime(1476): @ android.os.asynctask$internalhandler.handlemessage(asynctask.java:645) 11-06 22:49:10.023: e/androidruntime(1476): @ android.os.handler.dispatchmessage(handler.java:102) 11-06 22:49:10.023: e/androidruntime(1476): @ android.os.looper.loop(looper.java:136) 11-06 22:49:10.023: e/androidruntime(1476): @ android.app.activitythread.main(activitythread.java:5001) 11-06 22:49:10.023: e/androidruntime(1476): @ java.lang.reflect.method.invokenative(native method) 11-06 22:49:10.023: e/androidruntime(1476): @ java.lang.reflect.method.invoke(method.java:515) 11-06 22:49:10.023: e/androidruntime(1476): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:785) 11-06 22:49:10.023: e/androidruntime(1476): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:601) 11-06 22:49:10.023: e/androidruntime(1476): @ dalvik.system.nativestart.main(native method)

your exception occurs here:

arrays.sort(sortedlist);

the problem is, you're declaring variable string [] sortedlist;, never initialize variable array (i.e. sortedlist = new string[x];). means sortedlist remains null (this standard value of new object type) , causes nullpointerexception.

check why never , update/fix code.

mind prohibited write null elements array. means, array string[] sortedlist = {"a", null, "b"}; cause nullpointerexception if phone call arrays.sort(sortedlist).

java android hashmap

No comments:

Post a Comment