Can't get data from JSON parser android studio -


i'm trying single data jsonparser list in android studio. no error when compiling keeps on force closed on device. here jsonparser code:

public class jsonparser { // receives jsonobject , returns list public list<hashmap<string,object>> parse(jsonobject jobject){      jsonarray jcountries = null;     try {         // retrieves elements in 'countries' array         jcountries = jobject.getjsonarray("konten");     } catch (jsonexception e) {         e.printstacktrace();     }      // invoking getcountries array of json object     // each json object represent country     return getcountries(jcountries); }   private list<hashmap<string, object>> getcountries(jsonarray jcountries){     int countrycount = jcountries.length();     list<hashmap<string, object>> countrylist = new arraylist<hashmap<string,object>>();     hashmap<string, object> country = null;      // taking each country, parses , adds list object     for(int i=0; i<countrycount;i++){         try {             // call getcountry country json object parse country             country = getcountry((jsonobject)jcountries.get(i));             countrylist.add(country);          } catch (jsonexception e) {             e.printstacktrace();         }     }      return countrylist; }  // parsing country json object private hashmap<string, object> getcountry(jsonobject jcountry){      hashmap<string, object> country = new hashmap<string, object>();     string idkos   = "";     string namakos = "";     string alamat  = "";     string cp = "";     string koordinat1 = "";     string koordinat2 = "";     string fasilitas  = "";     string harga = "";     string jenis = "";     string foto1 = "";     string foto2 = "";     string foto3 = "";     /*string countryname = "";     string flag="";     string language = "";     string capital = "";     string currencycode = "";     string currencyname = "";*/      try {         idkos   = jcountry.getstring("id_kos");         namakos = jcountry.getstring("nama_kos");         alamat  = jcountry.getstring("alamat");         cp = jcountry.getstring("cp");         koordinat1 = jcountry.getstring("koordinat1");         koordinat2 = jcountry.getstring("koordinat2");         fasilitas  = jcountry.getstring("fasilitas");         harga = jcountry.getstring("harga");         jenis = jcountry.getstring("jenis");         foto1 = jcountry.getstring("foto1");         foto2 = jcountry.getstring("foto2");         foto3 = jcountry.getstring("foto3");          country.put("id_kos", idkos);         country.put("nama_kos", namakos);         country.put("alamat", alamat);         country.put("cp", cp);         country.put("koordinat1", koordinat1);         country.put("koordinat2", koordinat2);         country.put("fasilitas", fasilitas);         country.put("harga", harga);         country.put("jenis", jenis);         country.put("foto1", r.drawable.blank);         country.put("foto2", foto2);         country.put("foto3", foto3);         country.put("id_kos", idkos);         country.put("flag_path", foto1);        } catch (jsonexception e) {         e.printstacktrace();     }     return country; } } 

and activity code:

public class displaypeta extends fragmentactivity {  private static final string tag_sentkat = "exkategori"; private static final string tag_sentmin = "exmin"; private static final string tag_sentmax = "exmax";  listview mlistview; // list object store parsed countries list list<hashmap<string, object>> countries = null;  private googlemap mmap; // might null if google play services apk not available.  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.display_peta);      intent in = getintent();     string exmin = in.getstringextra(tag_sentmin);     string exmax = in.getstringextra(tag_sentmax);     string exkat = in.getstringextra(tag_sentkat);      // url json data     string strurl = "http://smartkos.zz.mu/android/kos.php?min=" +exmin+ "&max=" +exmax+ "&jenis=" +exkat;     //string strurl = "http://wptrafficanalyzer.in/p/demo1/first.php/countries";      // creating new non-ui thread task download json data     downloadtask downloadtask = new downloadtask();      // starting download process     downloadtask.execute(strurl);      // getting reference listview of activity_main     mlistview = (listview) findviewbyid(r.id.lv_kos);      // set new adapter listview     simpleadapter adapter = (simpleadapter ) mlistview.getadapter();      // setting adapter listview     mlistview.setadapter(adapter);      // click listener + intent displayinfo     adapterview.onitemclicklistener itemclicklistener = new adapterview.onitemclicklistener() {         @override         public void onitemclick(adapterview<?> parent, view container, int position, long id) {             // getting container layout of listview             //linearlayout linearlayoutparent = (linearlayout) container;              // getting inner linear layout             //linearlayout linearlayoutchild = (linearlayout ) linearlayoutparent.getchildat(1);              // getting country textview             //textview nama = (textview) linearlayoutchild.getchildat(0);             string nama = ((textview) container.findviewbyid(r.id.nama)).gettext().tostring();             string idkos = ((textview) container.findviewbyid(r.id.id)).gettext().tostring();             string alamat = ((textview) container.findviewbyid(r.id.alamat)).gettext().tostring();             string kontak = ((textview) container.findviewbyid(r.id.kontak)).gettext().tostring();             string jenis = ((textview) container.findviewbyid(r.id.jenis)).gettext().tostring();             string harga = ((textview) container.findviewbyid(r.id.harga)).gettext().tostring();             string info = ((textview) container.findviewbyid(r.id.infotext)).gettext().tostring();             string gal1 = ((textview) container.findviewbyid(r.id.gal1)).gettext().tostring();             string gal2 = ((textview) container.findviewbyid(r.id.gal2)).gettext().tostring();             string gal3 = ((textview) container.findviewbyid(r.id.gal3)).gettext().tostring();             string lati = ((textview) container.findviewbyid(r.id.latitude)).gettext().tostring();             string longi = ((textview) container.findviewbyid(r.id.longitude)).gettext().tostring();             //toast.maketext(getbasecontext(), nama.gettext().tostring(), toast.length_short).show();             toast.maketext(getbasecontext(), nama, toast.length_short).show();             // memulai memanggil ke class kontakactivity dengan data             intent in = new intent(getapplicationcontext(),displayinfo.class);             in.putextra("id", idkos);             in.putextra("nama", nama);             in.putextra("alamat", alamat);             in.putextra("kontak", kontak);             in.putextra("jenis", jenis);             in.putextra("harga", harga);             in.putextra("info", info);             in.putextra("gallery1", gal1);             in.putextra("gallery2", gal2);             in.putextra("gallery3", gal3);             in.putextra("lat", lati);             in.putextra("lon", longi);             startactivity(in);         }     };     // setting item click listener listview     mlistview.setonitemclicklistener(itemclicklistener);      setupmapifneeded(); }  /** method download json data url */ private string downloadurl(string strurl) throws ioexception {     string data = "";     inputstream istream = null;     try{         url url = new url(strurl);          // creating http connection communicate url         httpurlconnection urlconnection = (httpurlconnection) url.openconnection();          // connecting url         urlconnection.connect();          // reading data url         istream = urlconnection.getinputstream();          bufferedreader br = new bufferedreader(new inputstreamreader(istream));          stringbuffer sb  = new stringbuffer();          string line = "";         while( ( line = br.readline())  != null){             sb.append(line);         }          data = sb.tostring();          br.close();      }catch(exception e){         log.d("exception download url", e.tostring());     }finally{         istream.close();     }      return data; }  /** asynctask download json data */ private class downloadtask extends asynctask<string, integer, string> {     string data = null;     @override     protected string doinbackground(string... url) {         try{             data = downloadurl(url[0]);          }catch(exception e){             log.d("background task",e.tostring());         }         return data;     }      @override     protected void onpostexecute(string result) {          // parsing of xml data done in non-ui thread         listviewloadertask listviewloadertask = new listviewloadertask();          // start parsing xml data         listviewloadertask.execute(result);      } }  /** asynctask parse json data , load listview */ private class listviewloadertask extends asynctask<string, void, simpleadapter>{      jsonobject jobject;     // doing parsing of xml data in non-ui thread     @override     protected simpleadapter doinbackground(string... strjson) {           try{             jobject = new jsonobject(strjson[0]);             jsonparser jsonparser = new jsonparser();             jsonparser.parse(jobject);         }catch(exception e){             log.d("json exception1",e.tostring());         }          // instantiating json parser class         jsonparser jsonparser = new jsonparser();          //list<hashmap<string, object>> countries = null;          try{             // getting parsed data list construct             countries = jsonparser.parse(jobject);          }catch(exception e){             log.d("exception",e.tostring());         }          //ngelebokne latitude longitude neng maps, coba lewat kene           // keys used in hashmap         string[] = { "id_kos", "nama_kos", "flag", "harga" ,"alamat", "cp", "jenis", "fasilitas",                 "foto1", "foto2", "foto3", "koordinat1","koordinat2"};          // ids of views in listview_layout         int[] = { r.id.id, r.id.nama,r.id.gambar,r.id.harga,r.id.alamat, r.id.kontak, r.id.jenis,                 r.id.infotext, r.id.gal1, r.id.gal2, r.id.gal3, r.id.latitude, r.id.longitude};          // instantiating adapter store each items         // r.layout.listview_layout defines layout of each item         simpleadapter adapter = new simpleadapter(getbasecontext(), countries, r.layout.listview_layout, from, to);          return adapter;     }       // invoked android on "doinbackground" executed     @override     protected void onpostexecute(simpleadapter adapter) {          // setting adapter listview         mlistview.setadapter(adapter);          for(int i=0;i<adapter.getcount();i++){             hashmap<string, object> hm = (hashmap<string, object>) adapter.getitem(i);             string imgurl = (string) hm.get("flag_path");             imageloadertask imageloadertask = new imageloadertask();              hashmap<string, object> hmdownload = new hashmap<string, object>();             hm.put("flag_path",imgurl);             hm.put("position", i);               // starting imageloadertask download , populate image in listview             imageloadertask.execute(hm);         }     } }   // asynctask download , load image in listview private class imageloadertask extends asynctask<hashmap<string, object>, void, hashmap<string, object>>{      @override     protected hashmap<string, object> doinbackground(hashmap<string, object>... hm) {          inputstream istream=null;         string imgurl = (string) hm[0].get("flag_path");         int position = (integer) hm[0].get("position");          url url;         try {             url = new url(imgurl);              // creating http connection communicate url             httpurlconnection urlconnection = (httpurlconnection) url.openconnection();              // connecting url             urlconnection.connect();              // reading data url             istream = urlconnection.getinputstream();              // getting caching directory             file cachedirectory = getbasecontext().getcachedir();              // temporary file store downloaded image             file tmpfile = new file(cachedirectory.getpath() + "/wpta_"+position+".png");              // fileoutputstream temporary file             fileoutputstream foutstream = new fileoutputstream(tmpfile);              // creating bitmap downloaded inputstream             bitmap b = bitmapfactory.decodestream(istream);              // writing bitmap temporary file png file             b.compress(bitmap.compressformat.png,100, foutstream);              // flush fileoutputstream             foutstream.flush();              //close fileoutputstream             foutstream.close();              // create hashmap object store image path , position in listview             hashmap<string, object> hmbitmap = new hashmap<string, object>();              // storing path temporary image file             hmbitmap.put("flag",tmpfile.getpath());              // storing position of image in listview             hmbitmap.put("position",position);              // returning hashmap object containing image path , position             return hmbitmap;           }catch (exception e) {             e.printstacktrace();         }         return null;     }      @override     protected void onpostexecute(hashmap<string, object> result) {         // getting path downloaded image         string path = (string) result.get("flag");          // getting position of downloaded image         int position = (integer) result.get("position");          // getting adapter of listview         simpleadapter adapter = (simpleadapter ) mlistview.getadapter();          // getting hashmap object @ specified position of listview         hashmap<string, object> hm = (hashmap<string, object>) adapter.getitem(position);          // overwriting existing path in adapter         hm.put("flag",path);          // noticing listview dataset changes         adapter.notifydatasetchanged();     } }  @override protected void onresume() {     super.onresume();     setupmapifneeded(); }  /**  * sets map if possible (i.e., google play services apk correctly  * installed) , map has not been instantiated.. ensure ever  * call {@link #setupmap()} once when {@link #mmap} not null.  * <p/>  * if isn't installed {@link supportmapfragment} (and  * {@link com.google.android.gms.maps.mapview mapview}) show prompt user  * install/update google play services apk on device.  * <p/>  * user can return fragmentactivity after following prompt , correctly  * installing/updating/enabling google play services. since fragmentactivity may not  * have been destroyed during process (it  * stopped or paused), {@link #oncreate(bundle)} may not called again should call  * method in {@link #onresume()} guarantee called.  */ private void setupmapifneeded() {     // null check confirm have not instantiated map.     if (mmap == null) {         // try obtain map supportmapfragment.         mmap = ((supportmapfragment) getsupportfragmentmanager().findfragmentbyid(r.id.map))                 .getmap();         // check if successful in obtaining map.         if (mmap != null) {             setupmap();         }     } }  /**  * can add markers or lines, add listeners or move camera. in case,  * add marker near africa.  * <p/>  * should called once , when sure {@link #mmap} not null.  */ private void setupmap(){     mmap.setmylocationenabled(true);     double latitude;     double longitude;     int jumlahdata= countries.size();     for(int i=0;i<jumlahdata;i++){         latitude = (double) countries.get(i).get("koordinat1");         longitude = (double) countries.get(i).get("koordinat2");         mmap.addmarker(new markeroptions()                 .position(new latlng(latitude, longitude))                 .title("you here!")                 .snippet("consider located"));     } } } 

it should display map markers in it. works fine without countries.size , countries.get code, when add size , code, application force closed on device. can me?

here logcat:

05-30 21:24:52.322  23664-23664/com.example.sk.maplist e/resourcetype﹕ 0x5ace6988: failed restable::remove() cookie = 0x3, not last table. mheaders.size() = 4. warning spontaneous crashes when garbage collector runs. 05-30 21:24:52.322  23664-23664/com.example.sk.maplist e/asset﹕ error removing runtime skin resource (cookie 0x3) 05-30 21:24:52.322  23664-23664/com.example.sk.maplist i/asset﹕ problem removing runtime skin resources 05-30 21:24:52.602  23664-23664/com.example.sk.maplist d/libegl﹕ loaded /vendor/lib/egl/libegl_adreno.so 05-30 21:24:52.612  23664-23664/com.example.sk.maplist d/libegl﹕ loaded /vendor/lib/egl/libglesv1_cm_adreno.so 05-30 21:24:52.622  23664-23664/com.example.sk.maplist d/libegl﹕ loaded /vendor/lib/egl/libglesv2_adreno.so 05-30 21:24:52.632  23664-23664/com.example.sk.maplist i/adreno-egl﹕ <qegldrvapi_eglinitialize:316>: egl 1.4 qualcomm build: au_linux_android_jb_2.6.1.04.02.02.121.010_msm8960_jb_2.6_cl3869936_release_au (cl3869936)     opengl es shader compiler version: 17.01.10.spl     build date: 11/16/13 sat     local branch:     remote branch: quic/jb_2.6     local patches: none     reconstruct branch: au_linux_android_jb_2.6.1.04.02.02.121.010 +  nothing 05-30 21:24:52.732  23664-23664/com.example.sk.maplist d/openglrenderer﹕ enabling debug mode 0 05-30 21:25:06.136  23664-23664/com.example.sk.maplist i/dalvikvm﹕ not find method android.app.appopsmanager.checkpackage, referenced method com.google.android.gms.common.googleplayservicesutil.zza 05-30 21:25:06.146  23664-23664/com.example.sk.maplist w/dalvikvm﹕ vfy: unable resolve virtual method 120: landroid/app/appopsmanager;.checkpackage (iljava/lang/string;)v 05-30 21:25:06.146  23664-23664/com.example.sk.maplist d/dalvikvm﹕ vfy: replacing opcode 0x6e @ 0x0010 05-30 21:25:06.146  23664-23664/com.example.sk.maplist i/dalvikvm﹕ not find method android.content.pm.packagemanager.getpackageinstaller, referenced method com.google.android.gms.common.googleplayservicesutil.zzg 05-30 21:25:06.146  23664-23664/com.example.sk.maplist w/dalvikvm﹕ vfy: unable resolve virtual method 498: landroid/content/pm/packagemanager;.getpackageinstaller ()landroid/content/pm/packageinstaller; 05-30 21:25:06.146  23664-23664/com.example.sk.maplist d/dalvikvm﹕ vfy: replacing opcode 0x6e @ 0x000b 05-30 21:25:06.156  23664-23664/com.example.sk.maplist i/zzx﹕ making creator dynamically 05-30 21:25:06.226  23664-23664/com.example.sk.maplist i/google maps android api﹕ google play services client version: 7095000 05-30 21:25:06.246  23664-23664/com.example.sk.maplist i/google maps android api﹕ google play services package version: 7571034 05-30 21:25:06.277  23664-23664/com.example.sk.maplist i/dalvikvm﹕ not find method android.app.appopsmanager.checkpackage, referenced method com.google.android.gms.common.ij.a 05-30 21:25:06.277  23664-23664/com.example.sk.maplist w/dalvikvm﹕ vfy: unable resolve virtual method 111: landroid/app/appopsmanager;.checkpackage (iljava/lang/string;)v 05-30 21:25:06.277  23664-23664/com.example.sk.maplist d/dalvikvm﹕ vfy: replacing opcode 0x6e @ 0x0012 05-30 21:25:06.277  23664-23664/com.example.sk.maplist i/dalvikvm﹕ not find method android.content.pm.packagemanager.getpackageinstaller, referenced method com.google.android.gms.common.ij.a 05-30 21:25:06.277  23664-23664/com.example.sk.maplist w/dalvikvm﹕ vfy: unable resolve virtual method 449: landroid/content/pm/packagemanager;.getpackageinstaller ()landroid/content/pm/packageinstaller; 05-30 21:25:06.277  23664-23664/com.example.sk.maplist d/dalvikvm﹕ vfy: replacing opcode 0x6e @ 0x000d 05-30 21:25:06.287  23664-23664/com.example.sk.maplist i/dalvikvm﹕ not find method android.app.notification$builder.setlocalonly, referenced method com.google.android.gms.common.ij.b 05-30 21:25:06.287  23664-23664/com.example.sk.maplist w/dalvikvm﹕ vfy: unable resolve virtual method 154: landroid/app/notification$builder;.setlocalonly (z)landroid/app/notification$builder; 05-30 21:25:06.287  23664-23664/com.example.sk.maplist d/dalvikvm﹕ vfy: replacing opcode 0x6e @ 0x0201 05-30 21:25:06.947  23664-23664/com.example.sk.maplist d/androidruntime﹕ shutting down vm 05-30 21:25:06.947  23664-23664/com.example.sk.maplist w/dalvikvm﹕ threadid=1: thread exiting uncaught exception (group=0x418ea8b0) 05-30 21:25:06.967  23664-23664/com.example.sk.maplist e/androidruntime﹕ fatal exception: main     java.lang.runtimeexception: unable start activity componentinfo{com.example.sk.maplist/com.example.sk.maplist.displaypeta}: java.lang.nullpointerexception             @ android.app.activitythread.performlaunchactivity(activitythread.java:2261)             @ android.app.activitythread.handlelaunchactivity(activitythread.java:2311)             @ android.app.activitythread.access$600(activitythread.java:149)             @ android.app.activitythread$h.handlemessage(activitythread.java:1293)             @ android.os.handler.dispatchmessage(handler.java:99)             @ android.os.looper.loop(looper.java:137)             @ android.app.activitythread.main(activitythread.java:5214)             @ java.lang.reflect.method.invokenative(native method)             @ java.lang.reflect.method.invoke(method.java:525)             @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:739)             @ com.android.internal.os.zygoteinit.main(zygoteinit.java:555)             @ dalvik.system.nativestart.main(native method)      caused by: java.lang.nullpointerexception             @ com.example.sk.maplist.displaypeta.setupmap(displaypeta.java:400)             @ com.example.sk.maplist.displaypeta.setupmapifneeded(displaypeta.java:385)             @ com.example.sk.maplist.displaypeta.oncreate(displaypeta.java:131)             @ android.app.activity.performcreate(activity.java:5133)             @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1087)             @ android.app.activitythread.performlaunchactivity(activitythread.java:2225)             at android.app.activitythread.handlelaunchactivity(activitythread.java:2311)             at android.app.activitythread.access$600(activitythread.java:149)             at android.app.activitythread$h.handlemessage(activitythread.java:1293)             at android.os.handler.dispatchmessage(handler.java:99)             at android.os.looper.loop(looper.java:137)             at android.app.activitythread.main(activitythread.java:5214)             at java.lang.reflect.method.invokenative(native method)             at java.lang.reflect.method.invoke(method.java:525)             at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:739)             at com.android.internal.os.zygoteinit.main(zygoteinit.java:555)             at dalvik.system.nativestart.main(native method) 


Comments

Popular posts from this blog

node.js - Using Node without global install -

How to access a php class file from PHPFox framework into javascript code written in simple HTML file? -

java - Null response to php query in android, even though php works properly -