json - How to display YouTubePlayerView in a ListView in Android? -


the following shows error:

nullpointerexception: cannot start activity component(a.b.youtubeactivity)

please check out. passing single videoid of stuck nullpointerexception. following videoadapter:

public class videoadapter extends baseadapter implements youtubeplayer.oninitializedlistener {      public static final string api_key = "xxxx-pcd82qk8";     public static final string video_id = "7upbjkeiv_y";     context context;     layoutinflater inflater;     jsonarray jarray = null;     arraylist<youtubeitem> list;     private youtubeplayer youtubeplayer;     private youtubeplayerview youtubeplayerview;      public videoadapter(activity context,                         jsonarray jarray) {         // todo auto-generated constructor stub          parseresponse(jarray);     }      private void parseresponse(jsonarray jarray) {         if (jarray != null && jarray.length() > 0) {             string date;             string title;             string link;             jsonobject jsonobject;             list = new arraylist<youtubeitem>();              (int = 0; < jarray.length(); i++) {                 try {                     jsonobject = jarray.getjsonobject(i);                     date = jsonobject.getstring("date");                     title = jsonobject.getstring("title");                     link = jsonobject.getstring("link");                      if (date != null && title != null && link != null) {                         list.add(new youtubeitem(date, title, link));                     }                 } catch (jsonexception e) {                     e.printstacktrace();                 }              }          }         string[] date = new string[jarray.length()];         string[] title = new string[jarray.length()];         string[] link = new string[jarray.length()];      }      @override     public view getview(int position, view convertview, viewgroup parent) {         // todo auto-generated method stub         log.i("adapter 1", "");          view rowview = convertview;         if (convertview == null) {             layoutinflater inflater = (layoutinflater) context                     .getsystemservice(context.layout_inflater_service);             rowview = inflater.inflate(r.layout.youtube_view, parent, false);          }         log.i("adapter 3", "");         youtubeplayerview = (youtubeplayerview) rowview                 .findviewbyid(r.id.youtubeplayerview);         log.i("adapter 4", "");         youtubeplayerview.initialize(api_key, this);         log.i("adapter 5", "");         textview d = (textview) rowview.findviewbyid(r.id.textview1);         log.i("adapter 6", "");         textview t = (textview) rowview.findviewbyid(r.id.textview2);         log.i("adapter 7", "");         textview l = (textview) rowview.findviewbyid(r.id.textview3);         log.i("adapter 8", "");         d.settext(list.get(position).getdate());         log.i("adapter 9", "");         t.settext(list.get(position).gettitle());         log.i("adapter 10", "");         l.settext(list.get(position).getlink());         log.i("adapter 11", "");          return rowview;     }      @override     public int getcount() {         return list.size();     }      @override     public object getitem(int arg0) {         // todo auto-generated method stub         return null;     }      @override     public long getitemid(int i) {         // todo auto-generated method stub         return i;     }      private class youtubeitem {         private string date;         private string title;         private string link;          private youtubeitem(string date, string title, string link) {             this.date = date;             this.title = title;             this.link = link;         }          public string getdate() {             return date;         }          public void setdate(string date) {             this.date = date;         }          public string gettitle() {             return title;         }          public void settitle(string title) {             this.title = title;         }          public string getlink() {             return link;         }          public void setlink(string link) {             this.link = link;         }     }      @override     public void oninitializationfailure(provider arg0,                                         youtubeinitializationresult arg1) {         // todo auto-generated method stub      }      @override     public void oninitializationsuccess(provider provider,                                          youtubeplayer player, boolean wasrestored) {         // todo auto-generated method stub         youtubeplayer = player;          if (!wasrestored) {             player.cuevideo(video_id);         }     } } 

replace adapter one

public class videoadapter extends baseadapter {  context context; layoutinflater inflater; jsonarray jarray = null; arraylist<youtubeitem> list;  public videoadapter(youtubeactivity youtubeactivity,                     int activityyoutubeapi, jsonarray jarray) {     // todo auto-generated constructor stub      parseresponse(jarray); }  private void parseresponse(jsonarray jarray) {     if (jarray != null && jarray.length() > 0) {         string date;         string title;         string link;         jsonobject jsonobject;         list = new arraylist<>();          (int = 0; < jarray.length(); i++) {             try {                 jsonobject = jarray.getjsonobject(i);                 date = jsonobject.getstring("date");                 title = jsonobject.getstring("title");                 link = jsonobject.getstring("link");                  if (date != null && title != null && link != null) {                     list.add(new youtubeitem(date, title, link));                 }             } catch (jsonexception e) {                 e.printstacktrace();             }          }      }     string[] date = new string[jarray.length()];     string[] title = new string[jarray.length()];     string[] link = new string[jarray.length()];   }  @override public view getview(int position, view convertview, viewgroup parent) {     // todo auto-generated method stub      layoutinflater inflater = (layoutinflater) context             .getsystemservice(context.layout_inflater_service);     view rowview = inflater.inflate(r.layout.youtube_view, parent, false);     youtubeplayerview = (youtubeplayerview) rowview.findviewbyid(r.id.youtubeplayerview);     textview d = (textview) rowview.findviewbyid(r.id.textview1);     textview t = (textview) rowview.findviewbyid(r.id.textview2);     textview l = (textview) rowview.findviewbyid(r.id.textview3);      d.settext(list.get(position).getdate());     t.settext(list.get(position).gettitle());     l.settext(list.get(position).getlink());      return rowview; }  @override public int getcount() {     return list.size(); }  @override public object getitem(int arg0) {     // todo auto-generated method stub     return null; }  @override public long getitemid(int i) {     // todo auto-generated method stub     return i; }  private class youtubeitem {     private string date;     private string title;     private string link;      private youtubeitem(string date, string title, string link) {         this.date = date;         this.title = title;         this.link = link;     }      public string getdate() {         return date;     }      public void setdate(string date) {         this.date = date;     }      public string gettitle() {         return title;     }      public void settitle(string title) {         this.title = title;     }      public string getlink() {         return link;     }      public void setlink(string link) {         this.link = link;     } } } 

instead of creating 3 different arrays, created object called youtubeitem. more readable , easier manipulate, avoid problems if have lost 1 attribute of of 3 arrays , make parsing individual process (invalid object not affect whole process)

let me know if have more questions