java - Not able to load local json data in android -


i trying load json data in android device,however there condition.

1.)if there internet download data internet specific url.

2.)if there no internet, use local data in assets folder name tch.txt.

i did checking internet , executing required class.

my code works correct fetching data while there internet, gives me following error

   07-13 16:24:03.800  14691-14691/scientist.jobless.foodmana i/dalvikvm-heap﹕ grow heap (frag case) 11.560mb 692236-byte allocation 07-13 16:24:03.828  14691-14691/scientist.jobless.foodmana i/dalvikvm-heap﹕ grow heap (frag case) 12.259mb 692236-byte allocation 07-13 16:24:03.904  14691-14691/scientist.jobless.foodmana w/egl_genymotion﹕ eglsurfaceattrib not implemented 07-13 16:24:03.988  14691-14697/scientist.jobless.foodmana i/jdwp﹕ ignoring second debugger -- accepting , dropping 07-13 16:24:06.792  14691-14691/scientist.jobless.foodmana w/egl_genymotion﹕ eglsurfaceattrib not implemented 07-13 16:24:06.840  14691-14691/scientist.jobless.foodmana w/egl_genymotion﹕ eglsurfaceattrib not implemented 07-13 16:24:07.764  14691-14691/scientist.jobless.foodmana i/dalvikvm﹕ not find method android.content.res.typedarray.getchangingconfigurations, referenced method android.support.v7.internal.widget.tinttypedarray.getchangingconfigurations 07-13 16:24:07.764  14691-14691/scientist.jobless.foodmana w/dalvikvm﹕ vfy: unable resolve virtual method 491: landroid/content/res/typedarray;.getchangingconfigurations ()i 07-13 16:24:07.764  14691-14691/scientist.jobless.foodmana i/dalvikvm﹕ not find method android.content.res.typedarray.gettype, referenced method android.support.v7.internal.widget.tinttypedarray.gettype 07-13 16:24:07.764  14691-14691/scientist.jobless.foodmana w/dalvikvm﹕ vfy: unable resolve virtual method 513: landroid/content/res/typedarray;.gettype (i)i 07-13 16:24:07.780  14691-14742/scientist.jobless.foodmana w/system.err﹕ org.json.jsonexception: no value name 07-13 16:24:07.780  14691-14742/scientist.jobless.foodmana w/system.err﹕ @ org.json.jsonobject.get(jsonobject.java:354) 07-13 16:24:07.780  14691-14742/scientist.jobless.foodmana w/system.err﹕ @ org.json.jsonobject.getstring(jsonobject.java:510) 07-13 16:24:07.780  14691-14742/scientist.jobless.foodmana w/system.err﹕ @ scientist.jobless.foodmana.jsonloadsubfirstfirst$localdownloadjson.doinbackground(jsonloadsubfirstfirst.java:141) 07-13 16:24:07.780  14691-14742/scientist.jobless.foodmana w/system.err﹕ @ scientist.jobless.foodmana.jsonloadsubfirstfirst$localdownloadjson.doinbackground(jsonloadsubfirstfirst.java:80) 07-13 16:24:07.780  14691-14742/scientist.jobless.foodmana w/system.err﹕ @ android.os.asynctask$2.call(asynctask.java:287) 07-13 16:24:07.780  14691-14742/scientist.jobless.foodmana w/system.err﹕ @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:305) 07-13 16:24:07.780  14691-14742/scientist.jobless.foodmana w/system.err﹕ @ java.util.concurrent.futuretask.run(futuretask.java:137) 07-13 16:24:07.780  14691-14742/scientist.jobless.foodmana w/system.err﹕ @ android.os.asynctask$serialexecutor$1.run(asynctask.java:230) 07-13 16:24:07.780  14691-14742/scientist.jobless.foodmana w/system.err﹕ @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1076) 07-13 16:24:07.780  14691-14742/scientist.jobless.foodmana w/system.err﹕ @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:569) 07-13 16:24:07.780  14691-14742/scientist.jobless.foodmana w/system.err﹕ @ java.lang.thread.run(thread.java:856) 07-13 16:24:07.804  14691-14691/scientist.jobless.foodmana w/egl_genymotion﹕ eglsurfaceattrib not implemented 07-13 16:24:07.812  14691-14691/scientist.jobless.foodmana w/egl_genymotion﹕ eglsurfaceattrib not implemented 07-13 16:24:07.816  14691-14691/scientist.jobless.foodmana i/memorycache﹕ memorycache use 16.0mb 07-13 16:24:07.816  14691-14691/scientist.jobless.foodmana w/dalvikvm﹕ threadid=1: thread exiting uncaught exception (group=0xa6266288) 07-13 16:24:07.816  14691-14691/scientist.jobless.foodmana e/androidruntime﹕ fatal exception: main     java.lang.nullpointerexception             @ scientist.jobless.foodmana.listviewadapter.getcount(listviewadapter.java:39)             @ android.widget.listview.setadapter(listview.java:460)             @ scientist.jobless.foodmana.jsonloadsubfirstfirst$localdownloadjson.onpostexecute(jsonloadsubfirstfirst.java:176)             @ scientist.jobless.foodmana.jsonloadsubfirstfirst$localdownloadjson.onpostexecute(jsonloadsubfirstfirst.java:80)             @ 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:137)             @ android.app.activitythread.main(activitythread.java:4745)             @ java.lang.reflect.method.invokenative(native method)             @ java.lang.reflect.method.invoke(method.java:511)             @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:786)             @ com.android.internal.os.zygoteinit.main(zygoteinit.java:553)             @ dalvik.system.nativestart.main(native method) 

i thinking listviewadapter class has problem, not figure out. attaching jsonloader class , listviewadapterclass.

jsonloadsubfirstfirst.java

public class jsonloadsubfirstfirst extends actionbaractivity {     // declare variables //firstactivity seems main, lets see      progressdialog pd;     jsonobject jsonobject;     jsonobject jsonobject2;     string myjsonstring;     jsonarray jsonarray;     listview listview;     listviewadapter adapter;     progressdialog mprogressdialog;     arraylist<hashmap<string, string>> arraylist;     arraylist<hashmap<string, string>> localarraylist;     static string rank = "rank";     static string country = "country";     static string population = "population";     static string flag = "flag";      static final string name = "name";     static final string time = "time";     static final string venue = "serves";     static final string ingredients = "ingredients";     static final string prize_money2 = "prize2";     static final string registration_fee = "date";     static final string description = "description";       private boolean isnetworkavailable() {         connectivitymanager connectivitymanager                 = (connectivitymanager) getsystemservice(context.connectivity_service);         networkinfo activenetworkinfo = connectivitymanager.getactivenetworkinfo();         return activenetworkinfo != null && activenetworkinfo.isconnected();     }      @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);          // view listview_main.xml         setcontentview(r.layout.listview_main);         // execute downloadjson asynctask          if(isnetworkavailable())          new downloadjson(this).execute();         else             //setcontentview(r.layout.nonet);             new localdownloadjson().execute();      }       private class localdownloadjson extends asynctask<void, void, void> {          @override         protected void onpreexecute() {             super.onpreexecute();             pd = new progressdialog(jsonloadsubfirstfirst.this);              pd.setmessage("loading...");             pd.setprogressstyle(progressdialog.style_spinner);              pd.setindeterminate(true);             pd.setcancelable(false);             pd.show();         }            @override         protected void doinbackground(void... params) {             // create array             localarraylist = new arraylist<hashmap<string, string>>();             // retrieve json objects given url address              stringbuffer sb = new stringbuffer();             bufferedreader br = null;              try {                 br = new bufferedreader(new inputstreamreader(getassets().open("tch.txt")));                 string temp;                 while ((temp = br.readline()) != null)                     sb.append(temp);             }             catch (ioexception e)             {                  e.printstacktrace();             }                         {                 try                 {                     br.close();                 }                 catch (ioexception e)                 {                     e.printstacktrace();                 }             }              myjsonstring = sb.tostring();              try{                 jsonobject jsonobj = new jsonobject(myjsonstring);                 jsonarray attendance = jsonobj.getjsonarray("events");                  (int = 0; < attendance.length(); i++)                  {                      jsonobject = attendance.getjsonobject(i);                     string name = a.getstring("name");                     string time = a.getstring("time");                     string ingredients = a.getstring("ingredients");                     string serves = a.getstring("serves");                     string descr = a.getstring("descr");                     hashmap<string, string> contact = new hashmap<string, string>();                      // adding each child node hashmap key => value                     contact.put("event", name);                     contact.put("fee", time);                     contact.put("prize1", ingredients);                     contact.put("prize2", serves);                     contact.put("descr", descr);                     // adding contact contact list                     localarraylist.add(contact);                  }             } catch (jsonexception e) {                 e.printstacktrace();             }              return null;         }           @override         protected void onpostexecute(void args) {             // locate listview in listview_main.xml             //setcontentview(r.layout.listview_main);             listview = (listview) findviewbyid(r.id.listview);             // pass results listviewadapter.java             adapter = new listviewadapter(jsonloadsubfirstfirst.this, arraylist);             // set adapter listview             listview.setadapter(adapter);             // close progressdialog             //  mprogressdialog.dismiss();              //   textview.setvisibility(view.visible);             pd.dismiss();              super.onpostexecute(args);          }     }      private class downloadjson extends asynctask<void, void, void> {         private final progressdialog progressdialog;          public downloadjson(context ctx) {             progressdialog = mycustomprogressdialog.ctor(ctx);         }         @override         protected void onpreexecute() {              super.onpreexecute();               progressdialog.show();         }          @override         protected void doinbackground(void... params) {             // create array             arraylist = new arraylist<hashmap<string, string>>();             // retrieve json objects given url address             jsonobject = jsonfunctions.getjsonfromurl("https://lit-hamlet-6856.herokuapp.com/eventslist/technical");              try {                 // locate array name in json                 jsonarray = jsonobject.getjsonarray("events");                  (int = 0; < jsonarray.length(); i++) {                     hashmap<string, string> map = new hashmap<string, string>();                     jsonobject = jsonarray.getjsonobject(i);                     // retrive json objects                     map.put("name", jsonobject.getstring("name"));                     map.put("time", jsonobject.getstring("time"));                     map.put("serves", jsonobject.getstring("serves"));                     map.put("ingredients", jsonobject.getstring("ingredients"));                     map.put("description",jsonobject.getstring("description"));                     // set json objects array                     arraylist.add(map);                 }             } catch (jsonexception e) {                 log.e("error", e.getmessage());                 e.printstacktrace();             }             return null;         }          @override         protected void onpostexecute(void args) {             // locate listview in listview_main.xml             //setcontentview(r.layout.listview_main);             listview = (listview) findviewbyid(r.id.listview);             // pass results listviewadapter.java             adapter = new listviewadapter(jsonloadsubfirstfirst.this, arraylist);             // set adapter listview             listview.setadapter(adapter);             // close progressdialog           //  mprogressdialog.dismiss();             super.onpostexecute(args);          //   textview.setvisibility(view.visible);             progressdialog.hide();             super.onpostexecute(args);         }     } } 

listviewadapter.java

public class listviewadapter extends baseadapter {     private int lastposition = -1;     // declare variables     context context;     layoutinflater inflater;     arraylist<hashmap<string, string>> data;     imageloader imageloader;     hashmap<string, string> resultp = new hashmap<string, string>();      public listviewadapter(context context, arraylist<hashmap<string, string>> arraylist) {         this.context = context;         data = arraylist;         imageloader = new imageloader(context);     }      @override     public int getcount() {         return data.size();     }      @override     public object getitem(int position) {         return null;     }      @override     public long getitemid(int position) {         return 0;     }      public view getview(final int position, view convertview, viewgroup parent) {         // declare variables         textview rank;         textview country;         textview population;         imageview flag;         textview desc;          inflater = (layoutinflater) context.getsystemservice(context.layout_inflater_service);          view itemview = inflater.inflate(r.layout.listview_item, parent, false);           // position         resultp = data.get(position);           // locate textviews in listview_item.xml         rank = (textview) itemview.findviewbyid(r.id.rank);        // yoyo.with(techniques.tada).duration(700).playon(itemview.findviewbyid(r.id.rank)); animation         country = (textview) itemview.findviewbyid(r.id.country);         population = (textview) itemview.findviewbyid(r.id.population);         desc=(textview)itemview.findviewbyid(r.id.description);         // locate imageview in listview_item.xml         flag = (imageview) itemview.findviewbyid(r.id.flag);          // capture position , set results textviews         rank.settext(resultp.get(firstactivity.name));         country.settext(resultp.get(firstactivity.time));          /** put views want show on list**/         // desc.settext(resultp.get(mainactivity.description));        //population.settext(resultp.get(mainactivity.venue));//commented line seen in list view can seen in individual list         // capture position , set results imageview         // passes flag images url imageloader.class         imageloader.displayimage(resultp.get(firstactivity.ingredients), flag);           animation animation = animationutils.loadanimation(itemview.getcontext(), (position > lastposition) ? r.anim.up_from_bottom : r.anim.down_from_top);         itemview.startanimation(animation);         lastposition = position;             // capture listview item click         itemview.setonclicklistener(new onclicklistener() {              @override             public void onclick(view arg0) {                 // position                 resultp = data.get(position);                 intent intent = new intent(context, singleitemview.class);                 // pass data rank                 intent.putextra("name", resultp.get(firstactivity.name));                 // pass data country                 intent.putextra("time", resultp.get(firstactivity.time));                 // pass data population                 intent.putextra("serves",resultp.get(firstactivity.venue));                 // pass data flag                 intent.putextra("flag", resultp.get(firstactivity.ingredients));                  intent.putextra("description",resultp.get(firstactivity.description));                 // start singleitemview class                 context.startactivity(intent);              }         });         return itemview;     } } 

can tell me wrong in code :-) ?

in localdownloadjson class, adding items localarraylist use arraylist in adapter constructor, why empty data (blanc screen).

just change:

adapter = new listviewadapter(jsonloadsubfirstfirst.this, arraylist); 

to

adapter = new listviewadapter(jsonloadsubfirstfirst.this, localarraylist); 

in onpostexecute() method of localdownloadjson.


Comments

Popular posts from this blog

searchKeyword not working in AngularJS filter -

sequelize.js - Sequelize: sort by enum cases -

user interface - how to replace an ongoing process of image capture from another process call over the same ImageLabel in python's GUI TKinter -