android - why am i getting Attempt to invoke interface method 'int java.util.List.size()' on a null object reference? -


this question has answer here:

enter code here` 

public class mainactivity extends appcompatactivity {

private recyclerview recyclerview; private albumadapter adapter; public list<album> list;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);     toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar);     setsupportactionbar(toolbar);       recyclerview = (recyclerview) findviewbyid(r.id.recycler_view);      new movieasynctask().execute("");           adapter = new albumadapter(this, list);     recyclerview.setlayoutmanager(new gridlayoutmanager(this, 2));     recyclerview.setadapter(adapter); }  public class movieasynctask extends asynctask<string,void,list<album> > {       public list<album>  getmoviedatafromjson(string str)     {         list<album> albumarraylist = new arraylist<>();         string imageurilink = "http://image.tmdb.org/t/p/w342/";         final string release_date = "release_date";         final string rating = "vote_average";         final string poster_path = "poster_path";         try {             jsonobject jsonobject = new jsonobject(str);             jsonarray jsonarray = jsonobject.getjsonarray("results");             for(int i=0;i<jsonarray.length();i++)             {                 jsonobject jsonobject1 = jsonarray.getjsonobject(i);                 string releasedate = jsonobject1.getstring(release_date);                 string rating = jsonobject1.getdouble(rating)+"/10";                 string image = imageurilink+jsonobject1.getstring(poster_path);                 albumarraylist.add(new album(rating,releasedate,image));             }             string size = jsonarray.length()+" item";             log.v("size of albumlist = ",size);              return albumarraylist;         }         catch (jsonexception j)         {             j.printstacktrace();         }         return null;     }      @override     protected list<album>  doinbackground(string... params) {           bufferedreader reader = null;         httpurlconnection httpurlconnection = null;         string readjson  ;          final string sortby = "sort_by";         final string appid_param = "api_key";           try {               string movieuri = "https://api.themoviedb.org/3/discover/movie?";             uri builduri = uri.parse(movieuri).buildupon().appendqueryparameter(sortby,"popularity.desc")                     .appendqueryparameter(appid_param,buildconfig.movie_api_key).build();              url url = new url(builduri.tostring());              log.v("log_tag",builduri.tostring());              httpurlconnection = (httpurlconnection)url.openconnection();             httpurlconnection.setrequestmethod("get");             httpurlconnection.connect();              inputstream inputstream = httpurlconnection.getinputstream();              stringbuffer stringbuffer = new stringbuffer();             if(inputstream==null)             {                 return null;             }              reader = new bufferedreader(new inputstreamreader(inputstream));              string line;             while ((line = reader.readline()) != null) {                 // since it's json, adding newline isn't necessary (it won't affect parsing)                 // make debugging *lot* easier if print out completed                 // buffer debugging.                 stringbuffer.append(line + "\n");             }             if(stringbuffer==null)             {                 return null;             }              readjson = stringbuffer.tostring();             return getmoviedatafromjson(readjson);          }catch (ioexception i)         {             i.printstacktrace();         }         {             if(httpurlconnection!=null)             {                 httpurlconnection.disconnect();             }             if(reader!=null)             {                 try {                     reader.close();                 }catch(ioexception i)                 {                     i.printstacktrace();                 }             }         }          return null;     }      @override     protected void onpostexecute(list<album> albumlist) {          if(!albumlist.isempty())         {             super.onpostexecute(albumlist);             list = albumlist;         }      } } 

}

public class albumadapter extends recyclerview.adapter {

private context mcontext; private list<album> albumlist;    public class myviewholder extends recyclerview.viewholder {     public textview rating, releasedate;     public imageview thumbnail, overflow;      public myviewholder(view view) {         super(view);         rating = (textview) view.findviewbyid(r.id.title);         releasedate = (textview) view.findviewbyid(r.id.count);         thumbnail = (imageview) view.findviewbyid(r.id.thumbnails);         overflow = (imageview) view.findviewbyid(r.id.overflow);     } }  public albumadapter(context mcontext1, list<album> albumlist1) {     mcontext = mcontext1;     albumlist = albumlist1; }  @override public myviewholder oncreateviewholder(viewgroup parent, int viewtype) {     view view = layoutinflater.from(mcontext).inflate(r.layout.album_card, parent, false);     return new myviewholder(view); }  @override public void onbindviewholder(final myviewholder holder, int position) {      album album = albumlist.get(position);     holder.rating.settext(album.getrating());     holder.releasedate.settext(album.getreleasedate()+" songs ");      picasso.with(mcontext).load(album.getthumbnail()).into(holder.thumbnail);      log.v("image_url",album.getthumbnail());      holder.overflow.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             showpopup(holder.overflow);         }     }); }  /**  * showing popup menu wher tapping on 3 dots  */ private void showpopup(view view) {     popupmenu popupmenu = new popupmenu(mcontext,view);     menuinflater inflater = popupmenu.getmenuinflater();     inflater.inflate(r.menu.menu_album,popupmenu.getmenu());     popupmenu.setonmenuitemclicklistener(new popupmenu.onmenuitemclicklistener() {         @override         public boolean onmenuitemclick(menuitem item) {              switch (item.getitemid())             {                 case r.id.action_add_favourite :                     toast.maketext(mcontext,"add favourite",toast.length_short).show();                     return true;                 case r.id.action_play_next :                     toast.maketext(mcontext,"play next",toast.length_short).show();                     return true;             }             return false;         }     }); } @override public int getitemcount() {     return albumlist.size(); } 

}

exception

11-13 15:07:00.587 26661-26661/com.example.sanket3125.cardgridviewexample e/androidruntime: fatal exception: main process: com.example.sanket3125.cardgridviewexample, pid: 26661 java.lang.nullpointerexception: attempt invoke interface method 'int java.util.list.size()' on null object reference     @ com.example.sanket3125.cardgridviewexample.albumadapter.getitemcount(albumadapter.java:106)     @ android.support.v7.widget.recyclerview.dispatchlayoutstep1(recyclerview.java:3225)     @ android.support.v7.widget.recyclerview.onmeasure(recyclerview.java:2837)     @ android.view.view.measure(view.java:18811)     @ android.widget.relativelayout.measurechildhorizontal(relativelayout.java:716)     @ android.widget.relativelayout.onmeasure(relativelayout.java:462)     @ android.view.view.measure(view.java:18811)     @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5952)     @ android.support.design.widget.coordinatorlayout.onmeasurechild(coordinatorlayout.java:700)     @ android.support.design.widget.headerscrollingviewbehavior.onmeasurechild(headerscrollingviewbehavior.java:90)     @ android.support.design.widget.appbarlayout$scrollingviewbehavior.onmeasurechild(appbarlayout.java:1364)     @ android.support.design.widget.coordinatorlayout.onmeasure(coordinatorlayout.java:765)     @ android.view.view.measure(view.java:18811)     @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5952)     @ android.widget.framelayout.onmeasure(framelayout.java:194)     @ android.support.v7.widget.contentframelayout.onmeasure(contentframelayout.java:135)     @ android.view.view.measure(view.java:18811)     @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5952)     @ android.widget.linearlayout.measurechildbeforelayout(linearlayout.java:1465)     @ android.widget.linearlayout.measurevertical(linearlayout.java:748)     @ android.widget.linearlayout.onmeasure(linearlayout.java:630)     @ android.view.view.measure(view.java:18811)     @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5952)     @ android.widget.framelayout.onmeasure(framelayout.java:194)     @ android.view.view.measure(view.java:18811)     @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5952)     @ android.widget.linearlayout.measurechildbeforelayout(linearlayout.java:1465)     @ android.widget.linearlayout.measurevertical(linearlayout.java:748)     @ android.widget.linearlayout.onmeasure(linearlayout.java:630)     @ android.view.view.measure(view.java:18811)     @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5952)     @ android.widget.framelayout.onmeasure(framelayout.java:194)     @ com.android.internal.policy.phonewindow$decorview.onmeasure(phonewindow.java:2645)     @ android.view.view.measure(view.java:18811)     @ android.view.viewrootimpl.performmeasure(viewrootimpl.java:2127)     @ android.view.viewrootimpl.measurehierarchy(viewrootimpl.java:1243)     @ android.view.viewrootimpl.performtraversals(viewrootimpl.java:1535)     @ android.view.viewrootimpl.dotraversal(viewrootimpl.java:1134)     @ android.view.viewrootimpl$traversalrunnable.run(viewrootimpl.java:6045)     @ android.view.choreographer$callbackrecord.run(choreographer.java:860)     @ android.view.choreographer.docallbacks(choreographer.java:672)     @ android.view.choreographer.doframe(choreographer.java:608)     @ android.view.choreographer$framedisplayeventreceiver.run(choreographer.java:846)     @ android.os.handler.handlecallback(handler.java:739)     @ android.os.handler.dispatchmessage(handler.java:95)     @ android.os.looper.loop(looper.java:148)     @ android.app.activitythread.main(activitythread.java:5441)     @ java.lang.reflect.method.invoke(native method)     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:738)     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:628) 

you need initialize list variable in oncreate() before using in adapter.

new movieasynctask().execute(""); list = new arraylist<album>(); adapter = new albumadapter(this, list); 

also, once have results in onpostexecute() method, need tell adapter reload list :

@override protected void onpostexecute(list<album> albumlist) {      if(albumlist != null && !albumlist.isempty())     {         super.onpostexecute(albumlist);         list = albumlist;         adapter.notifydatasetchanged();     }  } 

Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -